Subject: linux-next: build failure after merge of the regulator tree

From: Stephen Rothwell <[email-masked]>
Date: Tue, 3 Sep 2019 14:26:38 +1000

Hi all,

After merging the regulator tree, today's linux-next build (powerpc
ppc64_defconfig) failed like this:

ld: drivers/ata/ahci.o:(.opd+0x150): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/ata/ahci.o: in function `.regulator_bulk_set_supply_names':
ahci.c:(.text+0x1780): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/ata/libahci.o: in function `.regulator_bulk_set_supply_names':
(.text+0x84a0): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/ata/libahci.o:(.opd+0x5d0): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/ata/sata_mv.o:(.opd+0x690): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/ata/sata_mv.o: in function `.regulator_bulk_set_supply_names':
sata_mv.c:(.text+0xb9b0): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/usb/common/common.o: in function `.regulator_bulk_set_supply_names':
(.text+0x7d0): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/usb/common/common.o:(.opd+0x120): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/usb/core/usb.o: in function `.regulator_bulk_set_supply_names':
(.text+0x17d0): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/usb/core/usb.o:(.opd+0x348): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/usb/core/hub.o: in function `.regulator_bulk_set_supply_names':
(.text+0x2610): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/usb/core/hub.o:(.opd+0x378): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/usb/core/hcd.o: in function `.regulator_bulk_set_supply_names':
(.text+0x3020): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/usb/core/hcd.o:(.opd+0x378): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/usb/core/message.o: in function `.regulator_bulk_set_supply_names':
(.text+0x2350): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/usb/core/message.o:(.opd+0x240): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/usb/core/phy.o: in function `.regulator_bulk_set_supply_names':
(.text+0x700): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/usb/core/phy.o:(.opd+0xc0): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/usb/core/of.o: in function `.regulator_bulk_set_supply_names':
(.text+0x2f0): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/usb/core/of.o:(.opd+0x48): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/usb/phy/of.o: in function `.regulator_bulk_set_supply_names':
(.text+0x120): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/usb/phy/of.o:(.opd+0x18): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/usb/host/ehci-hcd.o: in function `.regulator_bulk_set_supply_names':
(.text+0x11830): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/usb/host/ehci-hcd.o:(.opd+0x8d0): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/usb/host/ohci-hcd.o: in function `.regulator_bulk_set_supply_names':
(.text+0xe8d0): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/usb/host/ohci-hcd.o:(.opd+0x570): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here
ld: drivers/of/platform.o: in function `.regulator_bulk_set_supply_names':
(.text+0x1180): multiple definition of `.regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.text+0x2390): first defined here
ld: drivers/of/platform.o:(.opd+0x180): multiple definition of `regulator_bulk_set_supply_names'; drivers/phy/phy-core.o:(.opd+0x3f0): first defined here

Caused by commit

  d0087e72710c ("regulator: provide regulator_bulk_set_supply_names()")

I applied the following patch for today.

From: Stephen Rothwell <[email-masked]>
Date: Tue, 3 Sep 2019 14:23:17 +1000
Subject: [PATCH] regulator: stubs in header files should be static inline

Fixes: d0087e72710c ("regulator: provide regulator_bulk_set_supply_names()")
Signed-off-by: Stephen Rothwell <[email-masked]>
---
 include/linux/regulator/consumer.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/regulator/consumer.h b/include/linux/regulator/consumer.h
index 6d2181a76987..fe9bdf37c296 100644
--- a/include/linux/regulator/consumer.h
+++ b/include/linux/regulator/consumer.h
@@ -586,7 +586,7 @@ static inline int regulator_list_voltage(struct regulator *regulator, unsigned s
 	return -EINVAL;
 }
 
-void regulator_bulk_set_supply_names(struct regulator_bulk_data *consumers,
+static inline void regulator_bulk_set_supply_names(struct regulator_bulk_data *consumers,
 				     const char *const *supply_names,
 				     unsigned int num_supplies)
 {
-- 
2.23.0.rc1

-- 
Cheers,
Stephen Rothwell