mod/file2alias: make modalias generation safe for cross compiling
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
@@ -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
@@ -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
@@ -1,4 +1,5 @@ elfconfig.h mk_elfconfig modpost +devicetable-offsets.h
scripts/mod/Makefile +35 -0
@@ -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
@@ -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."
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_idstructures, 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.
Signed-off-by Andreas Schwab <[email protected]>---
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