mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 00:28:52 +02:00 
			
		
		
		
	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. Signed-off-by: Andreas Schwab <schwab@linux-m68k.org> Signed-off-by: Michal Marek <mmarek@suse.cz>
This commit is contained in:
		
							parent
							
								
									a49f0d1ea3
								
							
						
					
					
						commit
						6543becf26
					
				
					 8 changed files with 590 additions and 367 deletions
				
			
		
							
								
								
									
										1
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								Makefile
									
									
									
									
									
								
							|  | @ -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:"%"=%) | ||||
| 
 | ||||
|  |  | |||
|  | @ -33,8 +33,7 @@ struct ieee1394_device_id { | |||
| 	__u32 model_id; | ||||
| 	__u32 specifier_id; | ||||
| 	__u32 version; | ||||
| 	kernel_ulong_t driver_data | ||||
| 		__attribute__((aligned(sizeof(kernel_ulong_t)))); | ||||
| 	kernel_ulong_t driver_data; | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
|  | @ -148,8 +147,7 @@ struct hid_device_id { | |||
| 	__u16 group; | ||||
| 	__u32 vendor; | ||||
| 	__u32 product; | ||||
| 	kernel_ulong_t driver_data | ||||
| 		__attribute__((aligned(sizeof(kernel_ulong_t)))); | ||||
| 	kernel_ulong_t driver_data; | ||||
| }; | ||||
| 
 | ||||
| /* s390 CCW devices */ | ||||
|  | @ -173,8 +171,6 @@ struct ccw_device_id { | |||
| struct ap_device_id { | ||||
| 	__u16 match_flags;	/* which fields to match against */ | ||||
| 	__u8 dev_type;		/* device type */ | ||||
| 	__u8 pad1; | ||||
| 	__u32 pad2; | ||||
| 	kernel_ulong_t driver_info; | ||||
| }; | ||||
| 
 | ||||
|  | @ -184,13 +180,10 @@ struct ap_device_id { | |||
| struct css_device_id { | ||||
| 	__u8 match_flags; | ||||
| 	__u8 type; /* subchannel type */ | ||||
| 	__u16 pad2; | ||||
| 	__u32 pad3; | ||||
| 	kernel_ulong_t driver_data; | ||||
| }; | ||||
| 
 | ||||
| #define ACPI_ID_LEN	16 /* only 9 bytes needed here, 16 bytes are used */ | ||||
| 			   /* to workaround crosscompile issues */ | ||||
| #define ACPI_ID_LEN	9 | ||||
| 
 | ||||
| struct acpi_device_id { | ||||
| 	__u8 id[ACPI_ID_LEN]; | ||||
|  | @ -231,11 +224,7 @@ struct of_device_id | |||
| 	char	name[32]; | ||||
| 	char	type[32]; | ||||
| 	char	compatible[128]; | ||||
| #ifdef __KERNEL__ | ||||
| 	const void *data; | ||||
| #else | ||||
| 	kernel_ulong_t data; | ||||
| #endif | ||||
| }; | ||||
| 
 | ||||
| /* VIO */ | ||||
|  | @ -260,24 +249,14 @@ struct pcmcia_device_id { | |||
| 	/* for pseudo multi-function devices */ | ||||
| 	__u8  		device_no; | ||||
| 
 | ||||
| 	__u32 		prod_id_hash[4] | ||||
| 		__attribute__((aligned(sizeof(__u32)))); | ||||
| 	__u32 		prod_id_hash[4]; | ||||
| 
 | ||||
| 	/* not matched against in kernelspace*/ | ||||
| #ifdef __KERNEL__ | ||||
| 	const char *	prod_id[4]; | ||||
| #else | ||||
| 	kernel_ulong_t	prod_id[4] | ||||
| 		__attribute__((aligned(sizeof(kernel_ulong_t)))); | ||||
| #endif | ||||
| 
 | ||||
| 	/* not matched against */ | ||||
| 	kernel_ulong_t	driver_info; | ||||
| #ifdef __KERNEL__ | ||||
| 	char *		cisfile; | ||||
| #else | ||||
| 	kernel_ulong_t	cisfile; | ||||
| #endif | ||||
| }; | ||||
| 
 | ||||
| #define PCMCIA_DEV_ID_MATCH_MANF_ID	0x0001 | ||||
|  | @ -373,8 +352,7 @@ struct sdio_device_id { | |||
| 	__u8	class;			/* Standard interface or SDIO_ANY_ID */ | ||||
| 	__u16	vendor;			/* Vendor or SDIO_ANY_ID */ | ||||
| 	__u16	device;			/* Device ID or SDIO_ANY_ID */ | ||||
| 	kernel_ulong_t driver_data	/* Data private to the driver */ | ||||
| 		__attribute__((aligned(sizeof(kernel_ulong_t)))); | ||||
| 	kernel_ulong_t driver_data;	/* Data private to the driver */ | ||||
| }; | ||||
| 
 | ||||
| /* SSB core, see drivers/ssb/ */ | ||||
|  | @ -420,8 +398,7 @@ struct virtio_device_id { | |||
|  */ | ||||
| struct hv_vmbus_device_id { | ||||
| 	__u8 guid[16]; | ||||
| 	kernel_ulong_t driver_data	/* Data private to the driver */ | ||||
| 			__attribute__((aligned(sizeof(kernel_ulong_t)))); | ||||
| 	kernel_ulong_t driver_data;	/* Data private to the driver */ | ||||
| }; | ||||
| 
 | ||||
| /* rpmsg */ | ||||
|  | @ -440,8 +417,7 @@ struct rpmsg_device_id { | |||
| 
 | ||||
| struct i2c_device_id { | ||||
| 	char name[I2C_NAME_SIZE]; | ||||
| 	kernel_ulong_t driver_data	/* Data private to the driver */ | ||||
| 			__attribute__((aligned(sizeof(kernel_ulong_t)))); | ||||
| 	kernel_ulong_t driver_data;	/* Data private to the driver */ | ||||
| }; | ||||
| 
 | ||||
| /* spi */ | ||||
|  | @ -451,8 +427,7 @@ struct i2c_device_id { | |||
| 
 | ||||
| struct spi_device_id { | ||||
| 	char name[SPI_NAME_SIZE]; | ||||
| 	kernel_ulong_t driver_data	/* Data private to the driver */ | ||||
| 			__attribute__((aligned(sizeof(kernel_ulong_t)))); | ||||
| 	kernel_ulong_t driver_data;	/* Data private to the driver */ | ||||
| }; | ||||
| 
 | ||||
| /* dmi */ | ||||
|  | @ -484,15 +459,6 @@ struct dmi_strmatch { | |||
| 	char substr[79]; | ||||
| }; | ||||
| 
 | ||||
| #ifndef __KERNEL__ | ||||
| struct dmi_system_id { | ||||
| 	kernel_ulong_t callback; | ||||
| 	kernel_ulong_t ident; | ||||
| 	struct dmi_strmatch matches[4]; | ||||
| 	kernel_ulong_t driver_data | ||||
| 			__attribute__((aligned(sizeof(kernel_ulong_t)))); | ||||
| }; | ||||
| #else | ||||
| struct dmi_system_id { | ||||
| 	int (*callback)(const struct dmi_system_id *); | ||||
| 	const char *ident; | ||||
|  | @ -506,7 +472,6 @@ struct dmi_system_id { | |||
|  *	error: storage size of '__mod_dmi_device_table' isn't known | ||||
|  */ | ||||
| #define dmi_device_id dmi_system_id | ||||
| #endif | ||||
| 
 | ||||
| #define DMI_MATCH(a, b)	{ a, b } | ||||
| 
 | ||||
|  | @ -515,8 +480,7 @@ struct dmi_system_id { | |||
| 
 | ||||
| struct platform_device_id { | ||||
| 	char name[PLATFORM_NAME_SIZE]; | ||||
| 	kernel_ulong_t driver_data | ||||
| 			__attribute__((aligned(sizeof(kernel_ulong_t)))); | ||||
| 	kernel_ulong_t driver_data; | ||||
| }; | ||||
| 
 | ||||
| #define MDIO_MODULE_PREFIX	"mdio:" | ||||
|  | @ -572,11 +536,7 @@ struct isapnp_device_id { | |||
| struct amba_id { | ||||
| 	unsigned int		id; | ||||
| 	unsigned int		mask; | ||||
| #ifndef __KERNEL__ | ||||
| 	kernel_ulong_t		data; | ||||
| #else | ||||
| 	void			*data; | ||||
| #endif | ||||
| }; | ||||
| 
 | ||||
| /*
 | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
							
								
								
									
										1
									
								
								scripts/mod/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								scripts/mod/.gitignore
									
									
									
									
										vendored
									
									
								
							|  | @ -1,4 +1,5 @@ | |||
| elfconfig.h | ||||
| mk_elfconfig | ||||
| modpost | ||||
| devicetable-offsets.h | ||||
| 
 | ||||
|  |  | |||
|  | @ -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 < $< > $@ | ||||
|  |  | |||
							
								
								
									
										178
									
								
								scripts/mod/devicetable-offsets.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										178
									
								
								scripts/mod/devicetable-offsets.c
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,178 @@ | |||
| #include <linux/kbuild.h> | ||||
| #include <linux/mod_devicetable.h> | ||||
| 
 | ||||
| #define DEVID(devid) DEFINE(SIZE_##devid, sizeof(struct devid)) | ||||
| #define DEVID_FIELD(devid, field) \ | ||||
| 	DEFINE(OFF_##devid##_##field, offsetof(struct devid, field)) | ||||
| 
 | ||||
| int main(void) | ||||
| { | ||||
| 	DEVID(usb_device_id); | ||||
| 	DEVID_FIELD(usb_device_id, match_flags); | ||||
| 	DEVID_FIELD(usb_device_id, idVendor); | ||||
| 	DEVID_FIELD(usb_device_id, idProduct); | ||||
| 	DEVID_FIELD(usb_device_id, bcdDevice_lo); | ||||
| 	DEVID_FIELD(usb_device_id, bcdDevice_hi); | ||||
| 	DEVID_FIELD(usb_device_id, bDeviceClass); | ||||
| 	DEVID_FIELD(usb_device_id, bDeviceSubClass); | ||||
| 	DEVID_FIELD(usb_device_id, bDeviceProtocol); | ||||
| 	DEVID_FIELD(usb_device_id, bInterfaceClass); | ||||
| 	DEVID_FIELD(usb_device_id, bInterfaceSubClass); | ||||
| 	DEVID_FIELD(usb_device_id, bInterfaceProtocol); | ||||
| 	DEVID_FIELD(usb_device_id, bInterfaceNumber); | ||||
| 
 | ||||
| 	DEVID(hid_device_id); | ||||
| 	DEVID_FIELD(hid_device_id, bus); | ||||
| 	DEVID_FIELD(hid_device_id, group); | ||||
| 	DEVID_FIELD(hid_device_id, vendor); | ||||
| 	DEVID_FIELD(hid_device_id, product); | ||||
| 
 | ||||
| 	DEVID(ieee1394_device_id); | ||||
| 	DEVID_FIELD(ieee1394_device_id, match_flags); | ||||
| 	DEVID_FIELD(ieee1394_device_id, vendor_id); | ||||
| 	DEVID_FIELD(ieee1394_device_id, model_id); | ||||
| 	DEVID_FIELD(ieee1394_device_id, specifier_id); | ||||
| 	DEVID_FIELD(ieee1394_device_id, version); | ||||
| 
 | ||||
| 	DEVID(pci_device_id); | ||||
| 	DEVID_FIELD(pci_device_id, vendor); | ||||
| 	DEVID_FIELD(pci_device_id, device); | ||||
| 	DEVID_FIELD(pci_device_id, subvendor); | ||||
| 	DEVID_FIELD(pci_device_id, subdevice); | ||||
| 	DEVID_FIELD(pci_device_id, class); | ||||
| 	DEVID_FIELD(pci_device_id, class_mask); | ||||
| 
 | ||||
| 	DEVID(ccw_device_id); | ||||
| 	DEVID_FIELD(ccw_device_id, match_flags); | ||||
| 	DEVID_FIELD(ccw_device_id, cu_type); | ||||
| 	DEVID_FIELD(ccw_device_id, cu_model); | ||||
| 	DEVID_FIELD(ccw_device_id, dev_type); | ||||
| 	DEVID_FIELD(ccw_device_id, dev_model); | ||||
| 
 | ||||
| 	DEVID(ap_device_id); | ||||
| 	DEVID_FIELD(ap_device_id, dev_type); | ||||
| 
 | ||||
| 	DEVID(css_device_id); | ||||
| 	DEVID_FIELD(css_device_id, type); | ||||
| 
 | ||||
| 	DEVID(serio_device_id); | ||||
| 	DEVID_FIELD(serio_device_id, type); | ||||
| 	DEVID_FIELD(serio_device_id, proto); | ||||
| 	DEVID_FIELD(serio_device_id, id); | ||||
| 	DEVID_FIELD(serio_device_id, extra); | ||||
| 
 | ||||
| 	DEVID(acpi_device_id); | ||||
| 	DEVID_FIELD(acpi_device_id, id); | ||||
| 
 | ||||
| 	DEVID(pnp_device_id); | ||||
| 	DEVID_FIELD(pnp_device_id, id); | ||||
| 
 | ||||
| 	DEVID(pnp_card_device_id); | ||||
| 	DEVID_FIELD(pnp_card_device_id, devs); | ||||
| 
 | ||||
| 	DEVID(pcmcia_device_id); | ||||
| 	DEVID_FIELD(pcmcia_device_id, match_flags); | ||||
| 	DEVID_FIELD(pcmcia_device_id, manf_id); | ||||
| 	DEVID_FIELD(pcmcia_device_id, card_id); | ||||
| 	DEVID_FIELD(pcmcia_device_id, func_id); | ||||
| 	DEVID_FIELD(pcmcia_device_id, function); | ||||
| 	DEVID_FIELD(pcmcia_device_id, device_no); | ||||
| 	DEVID_FIELD(pcmcia_device_id, prod_id_hash); | ||||
| 
 | ||||
| 	DEVID(of_device_id); | ||||
| 	DEVID_FIELD(of_device_id, name); | ||||
| 	DEVID_FIELD(of_device_id, type); | ||||
| 	DEVID_FIELD(of_device_id, compatible); | ||||
| 
 | ||||
| 	DEVID(vio_device_id); | ||||
| 	DEVID_FIELD(vio_device_id, type); | ||||
| 	DEVID_FIELD(vio_device_id, compat); | ||||
| 
 | ||||
| 	DEVID(input_device_id); | ||||
| 	DEVID_FIELD(input_device_id, flags); | ||||
| 	DEVID_FIELD(input_device_id, bustype); | ||||
| 	DEVID_FIELD(input_device_id, vendor); | ||||
| 	DEVID_FIELD(input_device_id, product); | ||||
| 	DEVID_FIELD(input_device_id, version); | ||||
| 	DEVID_FIELD(input_device_id, evbit); | ||||
| 	DEVID_FIELD(input_device_id, keybit); | ||||
| 	DEVID_FIELD(input_device_id, relbit); | ||||
| 	DEVID_FIELD(input_device_id, absbit); | ||||
| 	DEVID_FIELD(input_device_id, mscbit); | ||||
| 	DEVID_FIELD(input_device_id, ledbit); | ||||
| 	DEVID_FIELD(input_device_id, sndbit); | ||||
| 	DEVID_FIELD(input_device_id, ffbit); | ||||
| 	DEVID_FIELD(input_device_id, swbit); | ||||
| 
 | ||||
| 	DEVID(eisa_device_id); | ||||
| 	DEVID_FIELD(eisa_device_id, sig); | ||||
| 
 | ||||
| 	DEVID(parisc_device_id); | ||||
| 	DEVID_FIELD(parisc_device_id, hw_type); | ||||
| 	DEVID_FIELD(parisc_device_id, hversion); | ||||
| 	DEVID_FIELD(parisc_device_id, hversion_rev); | ||||
| 	DEVID_FIELD(parisc_device_id, sversion); | ||||
| 
 | ||||
| 	DEVID(sdio_device_id); | ||||
| 	DEVID_FIELD(sdio_device_id, class); | ||||
| 	DEVID_FIELD(sdio_device_id, vendor); | ||||
| 	DEVID_FIELD(sdio_device_id, device); | ||||
| 
 | ||||
| 	DEVID(ssb_device_id); | ||||
| 	DEVID_FIELD(ssb_device_id, vendor); | ||||
| 	DEVID_FIELD(ssb_device_id, coreid); | ||||
| 	DEVID_FIELD(ssb_device_id, revision); | ||||
| 
 | ||||
| 	DEVID(bcma_device_id); | ||||
| 	DEVID_FIELD(bcma_device_id, manuf); | ||||
| 	DEVID_FIELD(bcma_device_id, id); | ||||
| 	DEVID_FIELD(bcma_device_id, rev); | ||||
| 	DEVID_FIELD(bcma_device_id, class); | ||||
| 
 | ||||
| 	DEVID(virtio_device_id); | ||||
| 	DEVID_FIELD(virtio_device_id, device); | ||||
| 	DEVID_FIELD(virtio_device_id, vendor); | ||||
| 
 | ||||
| 	DEVID(hv_vmbus_device_id); | ||||
| 	DEVID_FIELD(hv_vmbus_device_id, guid); | ||||
| 
 | ||||
| 	DEVID(i2c_device_id); | ||||
| 	DEVID_FIELD(i2c_device_id, name); | ||||
| 
 | ||||
| 	DEVID(spi_device_id); | ||||
| 	DEVID_FIELD(spi_device_id, name); | ||||
| 
 | ||||
| 	DEVID(dmi_system_id); | ||||
| 	DEVID_FIELD(dmi_system_id, matches); | ||||
| 
 | ||||
| 	DEVID(platform_device_id); | ||||
| 	DEVID_FIELD(platform_device_id, name); | ||||
| 
 | ||||
| 	DEVID(mdio_device_id); | ||||
| 	DEVID_FIELD(mdio_device_id, phy_id); | ||||
| 	DEVID_FIELD(mdio_device_id, phy_id_mask); | ||||
| 
 | ||||
| 	DEVID(zorro_device_id); | ||||
| 	DEVID_FIELD(zorro_device_id, id); | ||||
| 
 | ||||
| 	DEVID(isapnp_device_id); | ||||
| 	DEVID_FIELD(isapnp_device_id, vendor); | ||||
| 	DEVID_FIELD(isapnp_device_id, function); | ||||
| 
 | ||||
| 	DEVID(ipack_device_id); | ||||
| 	DEVID_FIELD(ipack_device_id, format); | ||||
| 	DEVID_FIELD(ipack_device_id, vendor); | ||||
| 	DEVID_FIELD(ipack_device_id, device); | ||||
| 
 | ||||
| 	DEVID(amba_id); | ||||
| 	DEVID_FIELD(amba_id, id); | ||||
| 	DEVID_FIELD(amba_id, mask); | ||||
| 
 | ||||
| 	DEVID(x86_cpu_id); | ||||
| 	DEVID_FIELD(x86_cpu_id, feature); | ||||
| 	DEVID_FIELD(x86_cpu_id, family); | ||||
| 	DEVID_FIELD(x86_cpu_id, model); | ||||
| 	DEVID_FIELD(x86_cpu_id, vendor); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -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 = | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Andreas Schwab
						Andreas Schwab