Skip to contentSkip to conversation

mod/file2alias: make modalias generation safe for cross compiling

PATCH In review Andreas Schwab 2 participants 2 messages Jan 20, 2013 – Jan 24, 2013 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mod/file2alias: make modalias generation safe for cross compiling

Use the target compiler to compute the offsets for the fields of the device_id structures, so that it won't be broken by different alignments between the host and target ABIs.

This also fixes missing endian corrections for some modaliases.

---
This has been tested with an allmodconfig cross build of the m68k kernel. This is the difference in the generated module aliases before and after the patch:

63,64c63,64
< drivers/media/radio/radio-sf16fmi.mod.c:MODULE_ALIAS("pnp:dtQT10ad*"); < drivers/media/radio/radio-sf16fmi.mod.c:MODULE_ALIAS("pnp:dtQT12ad*");
---

Quoted 2 lines

drivers/media/radio/radio-sf16fmi.mod.c:MODULE_ALIAS("pnp:dMFRad10*"); drivers/media/radio/radio-sf16fmi.mod.c:MODULE_ALIAS("pnp:dMFRad12*");

85,87c85,87
< drivers/ipack/devices/ipoctal.mod.c:MODULE_ALIAS("ipack:f01v00F00000d00220100*"); < drivers/ipack/devices/ipoctal.mod.c:MODULE_ALIAS("ipack:f00v0000002Ad01000000*"); < drivers/ipack/devices/ipoctal.mod.c:MODULE_ALIAS("ipack:f00v00480000d00000000*");
---

Quoted 3 lines

drivers/ipack/devices/ipoctal.mod.c:MODULE_ALIAS("ipack:f01v000000F0d00000022*"); drivers/ipack/devices/ipoctal.mod.c:MODULE_ALIAS("ipack:f01v000000F0d0000002A*"); drivers/ipack/devices/ipoctal.mod.c:MODULE_ALIAS("ipack:f01v000000F0d00000048*");

139,193c139,193
< drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:0001000?00010110????0010????????"); < drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:000110100001011000100010????????"); < drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:0010????0001011100100010????????"); < drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:010101010001010100100010????????"); < drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:0001????0001010100100010????????"); < drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:0101????0001010100100010????????"); < drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:0011????0111001000001110????????"); < drivers/net/phy/vitesse.mod.c:MODULE_ALIAS("mdio:11??????11000110????1111????????"); < drivers/net/phy/vitesse.mod.c:MODULE_ALIAS("mdio:0101????11000101????1111????????"); < drivers/net/phy/cicada.mod.c:MODULE_ALIAS("mdio:0001????11000100????1111????????"); < drivers/net/phy/cicada.mod.c:MODULE_ALIAS("mdio:01??????11000100????1111????????"); < drivers/net/phy/qsemi.mod.c:MODULE_ALIAS("mdio:0100????000101000001100000000000"); < drivers/net/phy/davicom.mod.c:MODULE_ALIAS("mdio:1000????1011100010000001????0001"); < drivers/net/phy/davicom.mod.c:MODULE_ALIAS("mdio:1010????1011100010000001????0001"); < drivers/net/phy/davicom.mod.c:MODULE_ALIAS("mdio:1000????0001101100011000????0000"); < drivers/net/phy/at803x.mod.c:MODULE_ALIAS("mdio:011?0110110100000100110100000000"); < drivers/net/phy/at803x.mod.c:MODULE_ALIAS("mdio:011?0010110100000100110100000000"); < drivers/net/phy/realtek.mod.c:MODULE_ALIAS("mdio:0001001011001001???11100????????"); < drivers/net/phy/et1011c.mod.c:MODULE_ALIAS("mdio:0001????111100001000001000000010"); < drivers/net/phy/national.mod.c:MODULE_ALIAS("mdio:0111????010111000000000000100000"); < drivers/net/phy/amd.mod.c:MODULE_ALIAS("mdio:0001????010101100010001000000000"); < drivers/net/phy/dp83640.mod.c:MODULE_ALIAS("mdio:1110????010111000000000000100000"); < drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0111????011000000010000000000000"); < drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:1110????011000000010000000000000"); < drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:1100????011000000010000000000000"); < drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:1011????011000000010000000000000"); < drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:1011????101111000100001100000001"); < drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:1011????101111000100001100000001"); < drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0110????101111010100001100000001"); < drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0111????101111010100001100000001"); < drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:1001????010111010110001000000011"); < drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0111????101111000100001100000001"); < drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0011????101111000100001100000001"); < drivers/net/phy/icplus.mod.c:MODULE_ALIAS("mdio:1000????0000110101000011????0010"); < drivers/net/phy/icplus.mod.c:MODULE_ALIAS("mdio:1001????0000110101000011????0010"); < drivers/net/phy/icplus.mod.c:MODULE_ALIAS("mdio:0101????0000110001000011????0010"); < drivers/net/phy/ste10Xp.mod.c:MODULE_ALIAS("mdio:0101????000111000000011000000000"); < drivers/net/phy/ste10Xp.mod.c:MODULE_ALIAS("mdio:00010001000000000000010000011100"); < drivers/net/phy/smsc.mod.c:MODULE_ALIAS("mdio:1010????110000000000011100000000"); < drivers/net/phy/smsc.mod.c:MODULE_ALIAS("mdio:1011????110000000000011100000000"); < drivers/net/phy/smsc.mod.c:MODULE_ALIAS("mdio:1100????110000000000011100000000"); < drivers/net/phy/smsc.mod.c:MODULE_ALIAS("mdio:1101????110000000000011100000000"); < drivers/net/phy/smsc.mod.c:MODULE_ALIAS("mdio:1111????110000000000011100000000"); < drivers/net/phy/lxt.mod.c:MODULE_ALIAS("mdio:0000????000000000001000001111000"); < drivers/net/phy/lxt.mod.c:MODULE_ALIAS("mdio:1110????011110000001001100000000"); < drivers/net/phy/lxt.mod.c:MODULE_ALIAS("mdio:0001????011110100001001100000000"); < drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0110????000011000100000100000001"); < drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:1001????000011000100000100000001"); < drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:1100????000011000100000100000001"); < drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0001????000011100100000100000001"); < drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:1011????000011000100000100000001"); < drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:1101????000011000100000100000001"); < drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0101????000011100100000100000001"); < drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0011????000011100100000100000001"); < drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:1001????000011100100000100000001");
---

Quoted 47 lines

drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:????????????0010000101100001000?"); drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:????????001000100001011000011010"); drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:????????00100010000101110010????"); drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:????????001000100001010101010101"); drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:????????00100010000101010001????"); drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:????????00100010000101010101????"); drivers/net/phy/micrel.mod.c:MODULE_ALIAS("mdio:????????00001110011100100011????"); drivers/net/phy/vitesse.mod.c:MODULE_ALIAS("mdio:????????????11111100011011??????"); drivers/net/phy/vitesse.mod.c:MODULE_ALIAS("mdio:????????????1111110001010101????"); drivers/net/phy/cicada.mod.c:MODULE_ALIAS("mdio:????????????1111110001000001????"); drivers/net/phy/cicada.mod.c:MODULE_ALIAS("mdio:????????????11111100010001??????"); drivers/net/phy/qsemi.mod.c:MODULE_ALIAS("mdio:0000000000011000000101000100????"); drivers/net/phy/davicom.mod.c:MODULE_ALIAS("mdio:????000110000001101110001000????"); drivers/net/phy/davicom.mod.c:MODULE_ALIAS("mdio:????000110000001101110001010????"); drivers/net/phy/davicom.mod.c:MODULE_ALIAS("mdio:????000000011000000110111000????"); drivers/net/phy/at803x.mod.c:MODULE_ALIAS("mdio:000000000100110111010000011?0110"); drivers/net/phy/at803x.mod.c:MODULE_ALIAS("mdio:000000000100110111010000011?0010"); drivers/net/phy/realtek.mod.c:MODULE_ALIAS("mdio:???????????111001100100100010010"); drivers/net/phy/et1011c.mod.c:MODULE_ALIAS("mdio:0000001010000010111100000001????"); drivers/net/phy/national.mod.c:MODULE_ALIAS("mdio:0010000000000000010111000111????"); drivers/net/phy/amd.mod.c:MODULE_ALIAS("mdio:0000000000100010010101100001????"); drivers/net/phy/dp83640.mod.c:MODULE_ALIAS("mdio:0010000000000000010111001110????"); drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0000000000100000011000000111????"); drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0000000000100000011000001110????"); drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0000000000100000011000001100????"); drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0000000000100000011000001011????"); drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0000000101000011101111001011????"); drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0000000101000011101111001011????"); drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0000000101000011101111010110????"); drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0000000101000011101111010111????"); drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0000001101100010010111011001????"); drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0000000101000011101111000111????"); drivers/net/phy/broadcom.mod.c:MODULE_ALIAS("mdio:0000000101000011101111000011????"); drivers/net/phy/icplus.mod.c:MODULE_ALIAS("mdio:????001001000011000011011000????"); drivers/net/phy/icplus.mod.c:MODULE_ALIAS("mdio:????001001000011000011011001????"); drivers/net/phy/icplus.mod.c:MODULE_ALIAS("mdio:????001001000011000011000101????"); drivers/net/phy/ste10Xp.mod.c:MODULE_ALIAS("mdio:0000000000000110000111000101????"); drivers/net/phy/ste10Xp.mod.c:MODULE_ALIAS("mdio:00011100000001000000000000010001"); drivers/net/phy/smsc.mod.c:MODULE_ALIAS("mdio:0000000000000111110000001010????"); drivers/net/phy/smsc.mod.c:MODULE_ALIAS("mdio:0000000000000111110000001011????"); drivers/net/phy/smsc.mod.c:MODULE_ALIAS("mdio:0000000000000111110000001100????"); drivers/net/phy/smsc.mod.c:MODULE_ALIAS("mdio:0000000000000111110000001101????"); drivers/net/phy/smsc.mod.c:MODULE_ALIAS("mdio:0000000000000111110000001111????"); drivers/net/phy/lxt.mod.c:MODULE_ALIAS("mdio:0111100000010000000000000000????"); drivers/net/phy/lxt.mod.c:MODULE_ALIAS("mdio:0000000000010011011110001110????"); drivers/net/phy/lxt.mod.c:MODULE_ALIAS("mdio:0000000000010011011110100001????"); drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0000000101000001000011000110????");

Quoted 8 lines

drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0000000101000001000011001001????"); drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0000000101000001000011001100????"); drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0000000101000001000011100001????"); drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0000000101000001000011001011????"); drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0000000101000001000011001101????"); drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0000000101000001000011100101????"); drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0000000101000001000011100011????"); drivers/net/phy/marvell.mod.c:MODULE_ALIAS("mdio:0000000101000001000011101001????");

195,200c195,200
< drivers/net/ethernet/8390/atari_ethernec.mod.c:MODULE_ALIAS("pnp:dAHG1120*"); < drivers/net/ethernet/8390/atari_ethernec.mod.c:MODULE_ALIAS("pnp:dbHT1602*"); < drivers/net/ethernet/8390/atari_ethernec.mod.c:MODULE_ALIAS("pnp:dtBAd680*"); < drivers/net/ethernet/8390/ne.mod.c:MODULE_ALIAS("pnp:dAHG1120*"); < drivers/net/ethernet/8390/ne.mod.c:MODULE_ALIAS("pnp:dbHT1602*"); < drivers/net/ethernet/8390/ne.mod.c:MODULE_ALIAS("pnp:dtBAd680*");
---

Quoted 6 lines

drivers/net/ethernet/8390/atari_ethernec.mod.c:MODULE_ALIAS("pnp:dAXE2011*"); drivers/net/ethernet/8390/atari_ethernec.mod.c:MODULE_ALIAS("pnp:dEDI0216*"); drivers/net/ethernet/8390/atari_ethernec.mod.c:MODULE_ALIAS("pnp:dPNP80d6*"); drivers/net/ethernet/8390/ne.mod.c:MODULE_ALIAS("pnp:dAXE2011*"); drivers/net/ethernet/8390/ne.mod.c:MODULE_ALIAS("pnp:dEDI0216*"); drivers/net/ethernet/8390/ne.mod.c:MODULE_ALIAS("pnp:dPNP80d6*");

203c203
< drivers/net/ethernet/8390/smc-ultra.mod.c:MODULE_ALIAS("pnp:dhZM1684*");
---

Quoted 1 line

drivers/net/ethernet/8390/smc-ultra.mod.c:MODULE_ALIAS("pnp:dSMC8416*");

844,845c844,845
< drivers/scsi/sym53c416.mod.c:MODULE_ALIAS("pnp:dbJM6141*"); < drivers/scsi/sym53c416.mod.c:MODULE_ALIAS("pnp:dbJM6341*");
---

Quoted 2 lines

drivers/scsi/sym53c416.mod.c:MODULE_ALIAS("pnp:dSLI4161*"); drivers/scsi/sym53c416.mod.c:MODULE_ALIAS("pnp:dSLI4163*");

854c854
< drivers/scsi/g_NCR5380.mod.c:MODULE_ALIAS("pnp:d`XR6e43*");
---

Quoted 1 line

drivers/scsi/g_NCR5380.mod.c:MODULE_ALIAS("pnp:dDTC436e*");

857,869c857,869
< drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D0215*"); < drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D0515*"); < drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D1015*"); < drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D1515*"); < drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D2015*"); < drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D1520*"); < drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D2215*"); < drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D1522*"); < drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D3015*"); < drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D1530*"); < drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D3215*"); < drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D1532*"); < drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dd@D6063*");
---

Quoted 5 lines

drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP1502*"); drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP1505*"); drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP1510*"); drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP1515*"); drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP1520*");

Quoted 8 lines

drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP2015*"); drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP1522*"); drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP2215*"); drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP1530*"); drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP3015*"); drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP1532*"); drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP3215*"); drivers/scsi/aha152x.mod.c:MODULE_ALIAS("pnp:dADP6360*");

875,880c875,880
< drivers/input/joydev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*k*r*a*m*l*s*f*w*"); < drivers/input/joydev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*k*r*a*m*l*s*f*w*"); < drivers/input/joydev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*k*r*a*m*l*s*f*w*"); < drivers/input/joydev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*k*r*a*m*l*s*f*w*"); < drivers/input/joydev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*k*r*a*m*l*s*f*w*"); < drivers/input/joydev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*k*r*a*m*l*s*f*w*");
---

Quoted 6 lines

drivers/input/joydev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*0,*m*l*s*f*w*"); drivers/input/joydev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*8,*m*l*s*f*w*"); drivers/input/joydev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*3,*k*r*a*6,*m*l*s*f*w*"); drivers/input/joydev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*1,*k*120,*r*a*m*l*s*f*w*"); drivers/input/joydev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*1,*k*130,*r*a*m*l*s*f*w*"); drivers/input/joydev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*1,*k*2C0,*r*a*m*l*s*f*w*");

908,912c908,912
< drivers/input/mousedev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*k*r*a*m*l*s*f*w*"); < drivers/input/mousedev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*k*r*a*m*l*s*f*w*"); < drivers/input/mousedev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*k*r*a*m*l*s*f*w*"); < drivers/input/mousedev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*k*r*a*m*l*s*f*w*"); < drivers/input/mousedev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*k*r*a*m*l*s*f*w*");
---

Quoted 5 lines

drivers/input/mousedev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*1,*2,*k*110,*r*0,*1,*a*m*l*s*f*w*"); drivers/input/mousedev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*1,*2,*k*r*8,*a*m*l*s*f*w*"); drivers/input/mousedev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*14A,*r*a*0,*1,*m*l*s*f*w*"); drivers/input/mousedev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*145,*r*a*0,*1,*18,*1C,*m*l*s*f*w*"); drivers/input/mousedev.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*1,*3,*k*110,*r*a*0,*1,*m*l*s*f*w*");

1107c1107
< drivers/macintosh/mac_hid.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*k*r*a*m*l*s*f*w*");
---

Quoted 1 line

drivers/macintosh/mac_hid.mod.c:MODULE_ALIAS("input:b*v*p*e*-e*1,*k*r*a*m*l*s*f*w*");

---
 Makefile                          |   1 -
 include/linux/mod_devicetable.h   |  58 +---
 scripts/Makefile.modpost          |   7 +-
 scripts/mod/.gitignore            |   1 +
 scripts/mod/Makefile              |  35 ++
 scripts/mod/devicetable-offsets.c | 178 ++++++++++
 scripts/mod/file2alias.c          | 674 +++++++++++++++++++++-----------------
 scripts/mod/modpost.c             |   5 +-
 8 files changed, 591 insertions(+), 368 deletions(-)
 create mode 100644 scripts/mod/devicetable-offsets.c
Makefile +0 -1
index 253a455..7d95aaf 100644
@@ -191,7 +191,6 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
 # "make" in the configured kernel build directory always uses that.
 # Default value for CROSS_COMPILE is not to prefix executables
 # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
-export KBUILD_BUILDHOST := $(SUBARCH)
 ARCH		?= $(SUBARCH)
 CROSS_COMPILE	?= $(CONFIG_CROSS_COMPILE:"%"=%)
 
include/linux/mod_devicetable.h +9 -49

154 lines not on this page · raw message

scripts/Makefile.modpost +1 -6
index a1cb022..cf82c83 100644
@@ -66,10 +66,6 @@ modules   := $(patsubst %.o,%.ko, $(wildcard $(__modules:.ko=.o)))
 # Stop after building .o files if NOFINAL is set. Makes compile tests quicker
 _modpost: $(if $(KBUILD_MODPOST_NOFINAL), $(modules:.ko:.o),$(modules))
 
-ifneq ($(KBUILD_BUILDHOST),$(ARCH))
-        cross_build := 1
-endif
-
 # Step 2), invoke modpost
 #  Includes step 3,4
 modpost = scripts/mod/modpost                    \
@@ -80,8 +76,7 @@ modpost = scripts/mod/modpost                    \
  $(if $(KBUILD_EXTRA_SYMBOLS), $(patsubst %, -e %,$(KBUILD_EXTRA_SYMBOLS))) \
  $(if $(KBUILD_EXTMOD),-o $(modulesymfile))      \
  $(if $(CONFIG_DEBUG_SECTION_MISMATCH),,-S)      \
- $(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w) \
- $(if $(cross_build),-c)
+ $(if $(KBUILD_EXTMOD)$(KBUILD_MODPOST_WARN),-w)
 
 quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules
       cmd_modpost = $(modpost) -s
scripts/mod/.gitignore +1 -0
index e9b7abe..33bae0d 100644
@@ -1,4 +1,5 @@
 elfconfig.h
 mk_elfconfig
 modpost
+devicetable-offsets.h
 
scripts/mod/Makefile +35 -0
index ff954f8..9415b56 100644
@@ -3,9 +3,44 @@ always		:= $(hostprogs-y) empty.o
 
 modpost-objs	:= modpost.o file2alias.o sumversion.o
 
+devicetable-offsets-file := devicetable-offsets.h
+
+define sed-y
+	"/^->/{s:->#\(.*\):/* \1 */:; \
+	s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
+	s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
+	s:->::; p;}"
+endef
+
+quiet_cmd_offsets = GEN     $@
+define cmd_offsets
+	(set -e; \
+	 echo "#ifndef __DEVICEVTABLE_OFFSETS_H__"; \
+	 echo "#define __DEVICEVTABLE_OFFSETS_H__"; \
+	 echo "/*"; \
+	 echo " * DO NOT MODIFY."; \
+	 echo " *"; \
+	 echo " * This file was generated by Kbuild"; \
+	 echo " *"; \
+	 echo " */"; \
+	 echo ""; \
+	 sed -ne $(sed-y) $<; \
+	 echo ""; \
+	 echo "#endif" ) > $@
+endef
+
+# We use internal kbuild rules to avoid the "is up to date" message from make
+scripts/mod/devicetable-offsets.s: scripts/mod/devicetable-offsets.c FORCE
+	$(Q)mkdir -p $(dir $@)
+	$(call if_changed_dep,cc_s_c)
+
+$(obj)/$(devicetable-offsets-file): scripts/mod/devicetable-offsets.s
+	$(call cmd,offsets)
+
 # dependencies on generated files need to be listed explicitly
 
 $(obj)/modpost.o $(obj)/file2alias.o $(obj)/sumversion.o: $(obj)/elfconfig.h
+$(obj)/file2alias.o: $(obj)/$(devicetable-offsets-file)
 
 quiet_cmd_elfconfig = MKELF   $@
       cmd_elfconfig = $(obj)/mk_elfconfig < $< > $@
scripts/mod/devicetable-offsets.c new file +178 -0

178 lines not on this page · raw message

scripts/mod/file2alias.c +366 -308

1,141 lines not on this page · raw message

scripts/mod/modpost.c +1 -4
index ff36c50..11a8c30 100644
@@ -2126,7 +2126,7 @@ int main(int argc, char **argv)
 	struct ext_sym_list *extsym_iter;
 	struct ext_sym_list *extsym_start = NULL;
 
-	while ((opt = getopt(argc, argv, "i:I:e:cmsSo:awM:K:")) != -1) {
+	while ((opt = getopt(argc, argv, "i:I:e:msSo:awM:K:")) != -1) {
 		switch (opt) {
 		case 'i':
 			kernel_read = optarg;
@@ -2135,9 +2135,6 @@ int main(int argc, char **argv)
 			module_read = optarg;
 			external_module = 1;
 			break;
-		case 'c':
-			cross_build = 1;
-			break;
 		case 'e':
 			external_module = 1;
 			extsym_iter =
Signature · 6 lines
1.8.1.1

-- 
Andreas Schwab, [email protected]
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."
#1 lore raw

Dne 20.1.2013 17:58, Andreas Schwab napsal(a):

Quoted 11 lines

Use the target compiler to compute the offsets for the fields of the device_id structures, so that it won't be broken by different alignments between the host and target ABIs.

This also fixes missing endian corrections for some modaliases.

---
This has been tested with an allmodconfig cross build of the m68k kernel. This is the difference in the generated module aliases before and after the patch:

Nice! I merged your patch to kbuild.git#kbuild.

Thanks,
Michal