diff options
| -rw-r--r-- | Documentation/kbuild/kbuild.txt | 29 | ||||
| -rw-r--r-- | Makefile | 59 | ||||
| -rw-r--r-- | arch/x86/scripts/strip-symbols | 1 | ||||
| -rw-r--r-- | init/Kconfig | 7 | ||||
| -rw-r--r-- | kernel/kallsyms.c | 16 | ||||
| -rw-r--r-- | scripts/Makefile.build | 55 | ||||
| -rw-r--r-- | scripts/Makefile.modinst | 3 | ||||
| -rwxr-xr-x | scripts/config | 4 | ||||
| -rw-r--r-- | scripts/genksyms/genksyms.c | 21 | ||||
| -rw-r--r-- | scripts/genksyms/keywords.c_shipped | 189 | ||||
| -rw-r--r-- | scripts/genksyms/keywords.gperf | 2 | ||||
| -rw-r--r-- | scripts/kallsyms.c | 21 | ||||
| -rw-r--r-- | scripts/mksysmap | 7 | ||||
| -rw-r--r-- | scripts/strip-symbols | 22 |
14 files changed, 185 insertions, 251 deletions
diff --git a/Documentation/kbuild/kbuild.txt b/Documentation/kbuild/kbuild.txt index 923f9ddee8f6..f3355b6812df 100644 --- a/Documentation/kbuild/kbuild.txt +++ b/Documentation/kbuild/kbuild.txt | |||
| @@ -3,7 +3,7 @@ Environment variables | |||
| 3 | KCPPFLAGS | 3 | KCPPFLAGS |
| 4 | -------------------------------------------------- | 4 | -------------------------------------------------- |
| 5 | Additional options to pass when preprocessing. The preprocessing options | 5 | Additional options to pass when preprocessing. The preprocessing options |
| 6 | will be used in all cases where kbuild do preprocessing including | 6 | will be used in all cases where kbuild does preprocessing including |
| 7 | building C files and assembler files. | 7 | building C files and assembler files. |
| 8 | 8 | ||
| 9 | KAFLAGS | 9 | KAFLAGS |
| @@ -16,7 +16,7 @@ Additional options to the C compiler. | |||
| 16 | 16 | ||
| 17 | KBUILD_VERBOSE | 17 | KBUILD_VERBOSE |
| 18 | -------------------------------------------------- | 18 | -------------------------------------------------- |
| 19 | Set the kbuild verbosity. Can be assinged same values as "V=...". | 19 | Set the kbuild verbosity. Can be assigned same values as "V=...". |
| 20 | See make help for the full list. | 20 | See make help for the full list. |
| 21 | Setting "V=..." takes precedence over KBUILD_VERBOSE. | 21 | Setting "V=..." takes precedence over KBUILD_VERBOSE. |
| 22 | 22 | ||
| @@ -35,14 +35,14 @@ KBUILD_OUTPUT | |||
| 35 | -------------------------------------------------- | 35 | -------------------------------------------------- |
| 36 | Specify the output directory when building the kernel. | 36 | Specify the output directory when building the kernel. |
| 37 | The output directory can also be specificed using "O=...". | 37 | The output directory can also be specificed using "O=...". |
| 38 | Setting "O=..." takes precedence over KBUILD_OUTPUT | 38 | Setting "O=..." takes precedence over KBUILD_OUTPUT. |
| 39 | 39 | ||
| 40 | ARCH | 40 | ARCH |
| 41 | -------------------------------------------------- | 41 | -------------------------------------------------- |
| 42 | Set ARCH to the architecture to be built. | 42 | Set ARCH to the architecture to be built. |
| 43 | In most cases the name of the architecture is the same as the | 43 | In most cases the name of the architecture is the same as the |
| 44 | directory name found in the arch/ directory. | 44 | directory name found in the arch/ directory. |
| 45 | But some architectures suach as x86 and sparc has aliases. | 45 | But some architectures such as x86 and sparc have aliases. |
| 46 | x86: i386 for 32 bit, x86_64 for 64 bit | 46 | x86: i386 for 32 bit, x86_64 for 64 bit |
| 47 | sparc: sparc for 32 bit, sparc64 for 64 bit | 47 | sparc: sparc for 32 bit, sparc64 for 64 bit |
| 48 | 48 | ||
| @@ -63,7 +63,7 @@ CF is often used on the command-line like this: | |||
| 63 | INSTALL_PATH | 63 | INSTALL_PATH |
| 64 | -------------------------------------------------- | 64 | -------------------------------------------------- |
| 65 | INSTALL_PATH specifies where to place the updated kernel and system map | 65 | INSTALL_PATH specifies where to place the updated kernel and system map |
| 66 | images. Default is /boot, but you can set it to other values | 66 | images. Default is /boot, but you can set it to other values. |
| 67 | 67 | ||
| 68 | 68 | ||
| 69 | MODLIB | 69 | MODLIB |
| @@ -90,7 +90,7 @@ INSTALL_MOD_STRIP will used as the options to the strip command. | |||
| 90 | 90 | ||
| 91 | INSTALL_FW_PATH | 91 | INSTALL_FW_PATH |
| 92 | -------------------------------------------------- | 92 | -------------------------------------------------- |
| 93 | INSTALL_FW_PATH specify where to install the firmware blobs. | 93 | INSTALL_FW_PATH specifies where to install the firmware blobs. |
| 94 | The default value is: | 94 | The default value is: |
| 95 | 95 | ||
| 96 | $(INSTALL_MOD_PATH)/lib/firmware | 96 | $(INSTALL_MOD_PATH)/lib/firmware |
| @@ -99,7 +99,7 @@ The value can be overridden in which case the default value is ignored. | |||
| 99 | 99 | ||
| 100 | INSTALL_HDR_PATH | 100 | INSTALL_HDR_PATH |
| 101 | -------------------------------------------------- | 101 | -------------------------------------------------- |
| 102 | INSTALL_HDR_PATH specify where to install user space headers when | 102 | INSTALL_HDR_PATH specifies where to install user space headers when |
| 103 | executing "make headers_*". | 103 | executing "make headers_*". |
| 104 | The default value is: | 104 | The default value is: |
| 105 | 105 | ||
| @@ -112,22 +112,23 @@ The value can be overridden in which case the default value is ignored. | |||
| 112 | 112 | ||
| 113 | KBUILD_MODPOST_WARN | 113 | KBUILD_MODPOST_WARN |
| 114 | -------------------------------------------------- | 114 | -------------------------------------------------- |
| 115 | KBUILD_MODPOST_WARN can be set to avoid error out in case of undefined | 115 | KBUILD_MODPOST_WARN can be set to avoid errors in case of undefined |
| 116 | symbols in the final module linking stage. | 116 | symbols in the final module linking stage. It changes such errors |
| 117 | into warnings. | ||
| 117 | 118 | ||
| 118 | KBUILD_MODPOST_FINAL | 119 | KBUILD_MODPOST_NOFINAL |
| 119 | -------------------------------------------------- | 120 | -------------------------------------------------- |
| 120 | KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules. | 121 | KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules. |
| 121 | This is solely usefull to speed up test compiles. | 122 | This is solely useful to speed up test compiles. |
| 122 | 123 | ||
| 123 | KBUILD_EXTRA_SYMBOLS | 124 | KBUILD_EXTRA_SYMBOLS |
| 124 | -------------------------------------------------- | 125 | -------------------------------------------------- |
| 125 | For modules use symbols from another modules. | 126 | For modules that use symbols from other modules. |
| 126 | See more details in modules.txt. | 127 | See more details in modules.txt. |
| 127 | 128 | ||
| 128 | ALLSOURCE_ARCHS | 129 | ALLSOURCE_ARCHS |
| 129 | -------------------------------------------------- | 130 | -------------------------------------------------- |
| 130 | For tags/TAGS/cscope targets, you can specify more than one archs | 131 | For tags/TAGS/cscope targets, you can specify more than one arch |
| 131 | to be included in the databases, separated by blankspace. e.g. | 132 | to be included in the databases, separated by blank space. E.g.: |
| 132 | 133 | ||
| 133 | $ make ALLSOURCE_ARCHS="x86 mips arm" tags | 134 | $ make ALLSOURCE_ARCHS="x86 mips arm" tags |
| @@ -610,25 +610,20 @@ export INSTALL_PATH ?= /boot | |||
| 610 | MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE) | 610 | MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE) |
| 611 | export MODLIB | 611 | export MODLIB |
| 612 | 612 | ||
| 613 | strip-symbols := $(srctree)/scripts/strip-symbols \ | ||
| 614 | $(wildcard $(srctree)/arch/$(ARCH)/scripts/strip-symbols) | ||
| 615 | |||
| 616 | # | 613 | # |
| 617 | # INSTALL_MOD_STRIP, if defined, will cause modules to be stripped while | 614 | # INSTALL_MOD_STRIP, if defined, will cause modules to be |
| 618 | # they get installed. If INSTALL_MOD_STRIP is '1', then the default | 615 | # stripped after they are installed. If INSTALL_MOD_STRIP is '1', then |
| 619 | # options (see below) will be used. Otherwise, INSTALL_MOD_STRIP will | 616 | # the default option --strip-debug will be used. Otherwise, |
| 620 | # be used as the option(s) to the objcopy command. | 617 | # INSTALL_MOD_STRIP will used as the options to the strip command. |
| 618 | |||
| 621 | ifdef INSTALL_MOD_STRIP | 619 | ifdef INSTALL_MOD_STRIP |
| 622 | ifeq ($(INSTALL_MOD_STRIP),1) | 620 | ifeq ($(INSTALL_MOD_STRIP),1) |
| 623 | mod_strip_cmd = $(OBJCOPY) --strip-debug | 621 | mod_strip_cmd = $(STRIP) --strip-debug |
| 624 | ifeq ($(CONFIG_KALLSYMS_ALL),$(CONFIG_KALLSYMS_STRIP_GENERATED)) | ||
| 625 | mod_strip_cmd += --wildcard $(addprefix --strip-symbols ,$(strip-symbols)) | ||
| 626 | endif | ||
| 627 | else | 622 | else |
| 628 | mod_strip_cmd = $(OBJCOPY) $(INSTALL_MOD_STRIP) | 623 | mod_strip_cmd = $(STRIP) $(INSTALL_MOD_STRIP) |
| 629 | endif # INSTALL_MOD_STRIP=1 | 624 | endif # INSTALL_MOD_STRIP=1 |
| 630 | else | 625 | else |
| 631 | mod_strip_cmd = false | 626 | mod_strip_cmd = true |
| 632 | endif # INSTALL_MOD_STRIP | 627 | endif # INSTALL_MOD_STRIP |
| 633 | export mod_strip_cmd | 628 | export mod_strip_cmd |
| 634 | 629 | ||
| @@ -758,7 +753,6 @@ last_kallsyms := 2 | |||
| 758 | endif | 753 | endif |
| 759 | 754 | ||
| 760 | kallsyms.o := .tmp_kallsyms$(last_kallsyms).o | 755 | kallsyms.o := .tmp_kallsyms$(last_kallsyms).o |
| 761 | kallsyms.h := $(wildcard include/config/kallsyms/*.h) $(wildcard include/config/kallsyms/*/*.h) | ||
| 762 | 756 | ||
| 763 | define verify_kallsyms | 757 | define verify_kallsyms |
| 764 | $(Q)$(if $($(quiet)cmd_sysmap), \ | 758 | $(Q)$(if $($(quiet)cmd_sysmap), \ |
| @@ -783,41 +777,24 @@ endef | |||
| 783 | 777 | ||
| 784 | # Generate .S file with all kernel symbols | 778 | # Generate .S file with all kernel symbols |
| 785 | quiet_cmd_kallsyms = KSYM $@ | 779 | quiet_cmd_kallsyms = KSYM $@ |
| 786 | cmd_kallsyms = { test $* -eq 0 || $(NM) -n $<; } \ | 780 | cmd_kallsyms = $(NM) -n $< | $(KALLSYMS) \ |
| 787 | | $(KALLSYMS) $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) >$@ | 781 | $(if $(CONFIG_KALLSYMS_ALL),--all-symbols) > $@ |
| 788 | |||
| 789 | quiet_cmd_kstrip = STRIP $@ | ||
| 790 | cmd_kstrip = $(OBJCOPY) --wildcard $(addprefix --strip$(if $(CONFIG_RELOCATABLE),-unneeded)-symbols ,$(filter %/scripts/strip-symbols,$^)) $< $@ | ||
| 791 | 782 | ||
| 792 | $(foreach n,0 1 2 3,.tmp_kallsyms$(n).o): KBUILD_AFLAGS += -Wa,--strip-local-absolute | 783 | .tmp_kallsyms1.o .tmp_kallsyms2.o .tmp_kallsyms3.o: %.o: %.S scripts FORCE |
| 793 | $(foreach n,0 1 2 3,.tmp_kallsyms$(n).o): %.o: %.S scripts FORCE | ||
| 794 | $(call if_changed_dep,as_o_S) | 784 | $(call if_changed_dep,as_o_S) |
| 795 | 785 | ||
| 796 | ifeq ($(CONFIG_KALLSYMS_STRIP_GENERATED),y) | 786 | .tmp_kallsyms%.S: .tmp_vmlinux% $(KALLSYMS) |
| 797 | strip-ext := .stripped | ||
| 798 | endif | ||
| 799 | |||
| 800 | .tmp_kallsyms%.S: .tmp_vmlinux%$(strip-ext) $(KALLSYMS) $(kallsyms.h) | ||
| 801 | $(call cmd,kallsyms) | 787 | $(call cmd,kallsyms) |
| 802 | 788 | ||
| 803 | # make -jN seems to have problems with intermediate files, see bug #3330. | ||
| 804 | .SECONDARY: $(foreach n,1 2 3,.tmp_vmlinux$(n).stripped) | ||
| 805 | .tmp_vmlinux%.stripped: .tmp_vmlinux% $(strip-symbols) $(kallsyms.h) | ||
| 806 | $(call cmd,kstrip) | ||
| 807 | |||
| 808 | ifneq ($(CONFIG_DEBUG_INFO),y) | ||
| 809 | .tmp_vmlinux%: LDFLAGS_vmlinux += -S | ||
| 810 | endif | ||
| 811 | # .tmp_vmlinux1 must be complete except kallsyms, so update vmlinux version | 789 | # .tmp_vmlinux1 must be complete except kallsyms, so update vmlinux version |
| 812 | .tmp_vmlinux%: $(vmlinux-lds) $(vmlinux-all) FORCE | 790 | .tmp_vmlinux1: $(vmlinux-lds) $(vmlinux-all) FORCE |
| 813 | $(if $(filter 1,$*),$(call if_changed_rule,ksym_ld),$(call if_changed,vmlinux__)) | 791 | $(call if_changed_rule,ksym_ld) |
| 814 | 792 | ||
| 815 | .tmp_vmlinux0$(strip-ext): | 793 | .tmp_vmlinux2: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms1.o FORCE |
| 816 | $(Q)echo "placeholder" >$@ | 794 | $(call if_changed,vmlinux__) |
| 817 | 795 | ||
| 818 | .tmp_vmlinux1: .tmp_kallsyms0.o | 796 | .tmp_vmlinux3: $(vmlinux-lds) $(vmlinux-all) .tmp_kallsyms2.o FORCE |
| 819 | .tmp_vmlinux2: .tmp_kallsyms1.o | 797 | $(call if_changed,vmlinux__) |
| 820 | .tmp_vmlinux3: .tmp_kallsyms2.o | ||
| 821 | 798 | ||
| 822 | # Needs to visit scripts/ before $(KALLSYMS) can be used. | 799 | # Needs to visit scripts/ before $(KALLSYMS) can be used. |
| 823 | $(KALLSYMS): scripts ; | 800 | $(KALLSYMS): scripts ; |
diff --git a/arch/x86/scripts/strip-symbols b/arch/x86/scripts/strip-symbols deleted file mode 100644 index a2f1ccb827c7..000000000000 --- a/arch/x86/scripts/strip-symbols +++ /dev/null | |||
| @@ -1 +0,0 @@ | |||
| 1 | __cpu_vendor_dev_X86_VENDOR_* | ||
diff --git a/init/Kconfig b/init/Kconfig index b9d1dd222104..f068071fcc5d 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
| @@ -725,13 +725,6 @@ config KALLSYMS_ALL | |||
| 725 | 725 | ||
| 726 | Say N. | 726 | Say N. |
| 727 | 727 | ||
| 728 | config KALLSYMS_STRIP_GENERATED | ||
| 729 | bool "Strip machine generated symbols from kallsyms" | ||
| 730 | depends on KALLSYMS_ALL | ||
| 731 | default y | ||
| 732 | help | ||
| 733 | Say N if you want kallsyms to retain even machine generated symbols. | ||
| 734 | |||
| 735 | config KALLSYMS_EXTRA_PASS | 728 | config KALLSYMS_EXTRA_PASS |
| 736 | bool "Do an extra kallsyms pass" | 729 | bool "Do an extra kallsyms pass" |
| 737 | depends on KALLSYMS | 730 | depends on KALLSYMS |
diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c index e694afa0eb8c..7b8b0f21a5b1 100644 --- a/kernel/kallsyms.c +++ b/kernel/kallsyms.c | |||
| @@ -30,19 +30,20 @@ | |||
| 30 | #define all_var 0 | 30 | #define all_var 0 |
| 31 | #endif | 31 | #endif |
| 32 | 32 | ||
| 33 | extern const unsigned long kallsyms_addresses[]; | 33 | /* These will be re-linked against their real values during the second link stage */ |
| 34 | extern const u8 kallsyms_names[]; | 34 | extern const unsigned long kallsyms_addresses[] __attribute__((weak)); |
| 35 | extern const u8 kallsyms_names[] __attribute__((weak)); | ||
| 35 | 36 | ||
| 36 | /* tell the compiler that the count isn't in the small data section if the arch | 37 | /* tell the compiler that the count isn't in the small data section if the arch |
| 37 | * has one (eg: FRV) | 38 | * has one (eg: FRV) |
| 38 | */ | 39 | */ |
| 39 | extern const unsigned long kallsyms_num_syms | 40 | extern const unsigned long kallsyms_num_syms |
| 40 | __attribute__((__section__(".rodata"))); | 41 | __attribute__((weak, section(".rodata"))); |
| 41 | 42 | ||
| 42 | extern const u8 kallsyms_token_table[]; | 43 | extern const u8 kallsyms_token_table[] __attribute__((weak)); |
| 43 | extern const u16 kallsyms_token_index[]; | 44 | extern const u16 kallsyms_token_index[] __attribute__((weak)); |
| 44 | 45 | ||
| 45 | extern const unsigned long kallsyms_markers[]; | 46 | extern const unsigned long kallsyms_markers[] __attribute__((weak)); |
| 46 | 47 | ||
| 47 | static inline int is_kernel_inittext(unsigned long addr) | 48 | static inline int is_kernel_inittext(unsigned long addr) |
| 48 | { | 49 | { |
| @@ -167,6 +168,9 @@ static unsigned long get_symbol_pos(unsigned long addr, | |||
| 167 | unsigned long symbol_start = 0, symbol_end = 0; | 168 | unsigned long symbol_start = 0, symbol_end = 0; |
| 168 | unsigned long i, low, high, mid; | 169 | unsigned long i, low, high, mid; |
| 169 | 170 | ||
| 171 | /* This kernel should never had been booted. */ | ||
| 172 | BUG_ON(!kallsyms_addresses); | ||
| 173 | |||
| 170 | /* do a binary search on the sorted kallsyms_addresses array */ | 174 | /* do a binary search on the sorted kallsyms_addresses array */ |
| 171 | low = 0; | 175 | low = 0; |
| 172 | high = kallsyms_num_syms; | 176 | high = kallsyms_num_syms; |
diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 5d900307de3e..c7de8b39fcf1 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build | |||
| @@ -151,16 +151,16 @@ cmd_cc_i_c = $(CPP) $(c_flags) -o $@ $< | |||
| 151 | $(obj)/%.i: $(src)/%.c FORCE | 151 | $(obj)/%.i: $(src)/%.c FORCE |
| 152 | $(call if_changed_dep,cc_i_c) | 152 | $(call if_changed_dep,cc_i_c) |
| 153 | 153 | ||
| 154 | cmd_genksyms = \ | 154 | cmd_gensymtypes = \ |
| 155 | $(CPP) -D__GENKSYMS__ $(c_flags) $< | \ | 155 | $(CPP) -D__GENKSYMS__ $(c_flags) $< | \ |
| 156 | $(GENKSYMS) -T $@ -A -a $(ARCH) \ | 156 | $(GENKSYMS) -T $@ -a $(ARCH) \ |
| 157 | $(if $(KBUILD_PRESERVE),-p) \ | 157 | $(if $(KBUILD_PRESERVE),-p) \ |
| 158 | $(if $(1),-r $(firstword $(wildcard $(@:.symtypes=.symref) /dev/null))) | 158 | $(if $(1),-r $(firstword $(wildcard $(@:.symtypes=.symref) /dev/null))) |
| 159 | 159 | ||
| 160 | quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@ | 160 | quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@ |
| 161 | cmd_cc_symtypes_c = \ | 161 | cmd_cc_symtypes_c = \ |
| 162 | set -e; \ | 162 | set -e; \ |
| 163 | $(call cmd_genksyms, true) >/dev/null; \ | 163 | $(call cmd_gensymtypes, true) >/dev/null; \ |
| 164 | test -s $@ || rm -f $@ | 164 | test -s $@ || rm -f $@ |
| 165 | 165 | ||
| 166 | $(obj)/%.symtypes : $(src)/%.c FORCE | 166 | $(obj)/%.symtypes : $(src)/%.c FORCE |
| @@ -177,38 +177,28 @@ cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $< | |||
| 177 | 177 | ||
| 178 | else | 178 | else |
| 179 | # When module versioning is enabled the following steps are executed: | 179 | # When module versioning is enabled the following steps are executed: |
| 180 | # o compile a .tmp_<file>.s from <file>.c | 180 | # o compile a .tmp_<file>.o from <file>.c |
| 181 | # o if .tmp_<file>.s doesn't contain a __ksymtab version, i.e. does | 181 | # o if .tmp_<file>.o doesn't contain a __ksymtab version, i.e. does |
| 182 | # not export symbols, we just assemble .tmp_<file>.s to <file>.o and | 182 | # not export symbols, we just rename .tmp_<file>.o to <file>.o and |
| 183 | # are done. | 183 | # are done. |
| 184 | # o otherwise, we calculate symbol versions using the good old | 184 | # o otherwise, we calculate symbol versions using the good old |
| 185 | # genksyms on the preprocessed source and postprocess them in a way | 185 | # genksyms on the preprocessed source and postprocess them in a way |
| 186 | # that they are usable as assembly source | 186 | # that they are usable as a linker script |
| 187 | # o assemble <file>.o from .tmp_<file>.s forcing inclusion of directives | 187 | # o generate <file>.o from .tmp_<file>.o using the linker to |
| 188 | # defining the actual values of __crc_*, followed by objcopy-ing them | 188 | # replace the unresolved symbols __crc_exported_symbol with |
| 189 | # to force these symbols to be local to permit stripping them later. | 189 | # the actual value of the checksum generated by genksyms |
| 190 | s_file = $(@D)/.tmp_$(@F:.o=.s) | ||
| 191 | v_file = $(@D)/.tmp_$(@F:.o=.v) | ||
| 192 | tmp_o_file = $(@D)/.tmp_$(@F) | ||
| 193 | no_g_c_flags = $(filter-out -g%,$(c_flags)) | ||
| 194 | |||
| 195 | cmd_cc_o_c = $(CC) $(c_flags) -S -o $(s_file) $< | ||
| 196 | 190 | ||
| 191 | cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $< | ||
| 197 | cmd_modversions = \ | 192 | cmd_modversions = \ |
| 198 | if grep -q __ksymtab $(s_file); then \ | 193 | if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then \ |
| 199 | if $(call cmd_genksyms, $(KBUILD_SYMTYPES)) > $(v_file) \ | 194 | $(call cmd_gensymtypes, $(KBUILD_SYMTYPES)) \ |
| 200 | && $(CC) $(no_g_c_flags) -c -Wa,$(v_file) \ | 195 | > $(@D)/.tmp_$(@F:.o=.ver); \ |
| 201 | -o $(tmp_o_file) $(s_file) \ | 196 | \ |
| 202 | && $(OBJCOPY) -L '__crc_*' -L '___crc_*' -w \ | 197 | $(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) \ |
| 203 | $(tmp_o_file) $@; \ | 198 | -T $(@D)/.tmp_$(@F:.o=.ver); \ |
| 204 | then \ | 199 | rm -f $(@D)/.tmp_$(@F) $(@D)/.tmp_$(@F:.o=.ver); \ |
| 205 | : ; \ | ||
| 206 | else \ | ||
| 207 | rm -f $@; exit 1; \ | ||
| 208 | fi; \ | ||
| 209 | else \ | 200 | else \ |
| 210 | rm -f $(v_file); \ | 201 | mv -f $(@D)/.tmp_$(@F) $@; \ |
| 211 | $(CC) $(no_g_c_flags) -c -o $@ $(s_file); \ | ||
| 212 | fi; | 202 | fi; |
| 213 | endif | 203 | endif |
| 214 | 204 | ||
| @@ -225,12 +215,7 @@ define rule_cc_o_c | |||
| 225 | $(cmd_record_mcount) \ | 215 | $(cmd_record_mcount) \ |
| 226 | scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > \ | 216 | scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > \ |
| 227 | $(dot-target).tmp; \ | 217 | $(dot-target).tmp; \ |
| 228 | if [ -r $(@D)/.tmp_$(@F:.o=.v) ]; then \ | 218 | rm -f $(depfile); \ |
| 229 | echo >> $(dot-target).tmp; \ | ||
| 230 | echo '$@: $(GENKSYMS)' >> $(dot-target).tmp; \ | ||
| 231 | echo '$(GENKSYMS):: ;' >> $(dot-target).tmp; \ | ||
| 232 | fi; \ | ||
| 233 | rm -f $(depfile) $(@D)/.tmp_$(@F:.o=.?); \ | ||
| 234 | mv -f $(dot-target).tmp $(dot-target).cmd | 219 | mv -f $(dot-target).tmp $(dot-target).cmd |
| 235 | endef | 220 | endef |
| 236 | 221 | ||
diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst index a5122dce1264..efa5d940e632 100644 --- a/scripts/Makefile.modinst +++ b/scripts/Makefile.modinst | |||
| @@ -17,8 +17,7 @@ __modinst: $(modules) | |||
| 17 | @: | 17 | @: |
| 18 | 18 | ||
| 19 | quiet_cmd_modules_install = INSTALL $@ | 19 | quiet_cmd_modules_install = INSTALL $@ |
| 20 | cmd_modules_install = mkdir -p $(2); \ | 20 | cmd_modules_install = mkdir -p $(2); cp $@ $(2) ; $(mod_strip_cmd) $(2)/$(notdir $@) |
| 21 | $(mod_strip_cmd) $@ $(2)/$(notdir $@) || cp $@ $(2) | ||
| 22 | 21 | ||
| 23 | # Modules built outside the kernel source tree go into extra by default | 22 | # Modules built outside the kernel source tree go into extra by default |
| 24 | INSTALL_MOD_DIR ?= extra | 23 | INSTALL_MOD_DIR ?= extra |
diff --git a/scripts/config b/scripts/config index 68b9761cdc38..db6084b78a10 100755 --- a/scripts/config +++ b/scripts/config | |||
| @@ -60,6 +60,10 @@ else | |||
| 60 | FN=.config | 60 | FN=.config |
| 61 | fi | 61 | fi |
| 62 | 62 | ||
| 63 | if [ "$1" = "" ] ; then | ||
| 64 | usage | ||
| 65 | fi | ||
| 66 | |||
| 63 | while [ "$1" != "" ] ; do | 67 | while [ "$1" != "" ] ; do |
| 64 | CMD="$1" | 68 | CMD="$1" |
| 65 | shift | 69 | shift |
diff --git a/scripts/genksyms/genksyms.c b/scripts/genksyms/genksyms.c index f8bb4cabd62d..3a8297b5184c 100644 --- a/scripts/genksyms/genksyms.c +++ b/scripts/genksyms/genksyms.c | |||
| @@ -43,7 +43,7 @@ int cur_line = 1; | |||
| 43 | char *cur_filename; | 43 | char *cur_filename; |
| 44 | 44 | ||
| 45 | static int flag_debug, flag_dump_defs, flag_reference, flag_dump_types, | 45 | static int flag_debug, flag_dump_defs, flag_reference, flag_dump_types, |
| 46 | flag_preserve, flag_warnings, flag_asm; | 46 | flag_preserve, flag_warnings; |
| 47 | static const char *arch = ""; | 47 | static const char *arch = ""; |
| 48 | static const char *mod_prefix = ""; | 48 | static const char *mod_prefix = ""; |
| 49 | 49 | ||
| @@ -610,11 +610,8 @@ void export_symbol(const char *name) | |||
| 610 | if (flag_dump_defs) | 610 | if (flag_dump_defs) |
| 611 | fputs(">\n", debugfile); | 611 | fputs(">\n", debugfile); |
| 612 | 612 | ||
| 613 | /* Used as assembly source or a linker script. */ | 613 | /* Used as a linker script. */ |
| 614 | printf(flag_asm | 614 | printf("%s__crc_%s = 0x%08lx ;\n", mod_prefix, name, crc); |
| 615 | ? ".equiv %s__crc_%s, %#08lx\n" | ||
| 616 | : "%s__crc_%s = %#08lx ;\n", | ||
| 617 | mod_prefix, name, crc); | ||
| 618 | } | 615 | } |
| 619 | } | 616 | } |
| 620 | 617 | ||
| @@ -651,10 +648,9 @@ void error_with_pos(const char *fmt, ...) | |||
| 651 | 648 | ||
| 652 | static void genksyms_usage(void) | 649 | static void genksyms_usage(void) |
| 653 | { | 650 | { |
| 654 | fputs("Usage:\n" "genksyms [-aAdDTwqhV] > /path/to/.tmp_obj.ver\n" "\n" | 651 | fputs("Usage:\n" "genksyms [-adDTwqhV] > /path/to/.tmp_obj.ver\n" "\n" |
| 655 | #ifdef __GNU_LIBRARY__ | 652 | #ifdef __GNU_LIBRARY__ |
| 656 | " -a, --arch Select architecture\n" | 653 | " -a, --arch Select architecture\n" |
| 657 | " -A, --asm Generate assembly rather than linker script\n" | ||
| 658 | " -d, --debug Increment the debug level (repeatable)\n" | 654 | " -d, --debug Increment the debug level (repeatable)\n" |
| 659 | " -D, --dump Dump expanded symbol defs (for debugging only)\n" | 655 | " -D, --dump Dump expanded symbol defs (for debugging only)\n" |
| 660 | " -r, --reference file Read reference symbols from a file\n" | 656 | " -r, --reference file Read reference symbols from a file\n" |
| @@ -666,7 +662,6 @@ static void genksyms_usage(void) | |||
| 666 | " -V, --version Print the release version\n" | 662 | " -V, --version Print the release version\n" |
| 667 | #else /* __GNU_LIBRARY__ */ | 663 | #else /* __GNU_LIBRARY__ */ |
| 668 | " -a Select architecture\n" | 664 | " -a Select architecture\n" |
| 669 | " -A Generate assembly rather than linker script\n" | ||
| 670 | " -d Increment the debug level (repeatable)\n" | 665 | " -d Increment the debug level (repeatable)\n" |
| 671 | " -D Dump expanded symbol defs (for debugging only)\n" | 666 | " -D Dump expanded symbol defs (for debugging only)\n" |
| 672 | " -r file Read reference symbols from a file\n" | 667 | " -r file Read reference symbols from a file\n" |
| @@ -688,7 +683,6 @@ int main(int argc, char **argv) | |||
| 688 | #ifdef __GNU_LIBRARY__ | 683 | #ifdef __GNU_LIBRARY__ |
| 689 | struct option long_opts[] = { | 684 | struct option long_opts[] = { |
| 690 | {"arch", 1, 0, 'a'}, | 685 | {"arch", 1, 0, 'a'}, |
| 691 | {"asm", 0, 0, 'A'}, | ||
| 692 | {"debug", 0, 0, 'd'}, | 686 | {"debug", 0, 0, 'd'}, |
| 693 | {"warnings", 0, 0, 'w'}, | 687 | {"warnings", 0, 0, 'w'}, |
| 694 | {"quiet", 0, 0, 'q'}, | 688 | {"quiet", 0, 0, 'q'}, |
| @@ -701,10 +695,10 @@ int main(int argc, char **argv) | |||
| 701 | {0, 0, 0, 0} | 695 | {0, 0, 0, 0} |
| 702 | }; | 696 | }; |
| 703 | 697 | ||
| 704 | while ((o = getopt_long(argc, argv, "a:dwqVADr:T:ph", | 698 | while ((o = getopt_long(argc, argv, "a:dwqVDr:T:ph", |
| 705 | &long_opts[0], NULL)) != EOF) | 699 | &long_opts[0], NULL)) != EOF) |
| 706 | #else /* __GNU_LIBRARY__ */ | 700 | #else /* __GNU_LIBRARY__ */ |
| 707 | while ((o = getopt(argc, argv, "a:dwqVADr:T:ph")) != EOF) | 701 | while ((o = getopt(argc, argv, "a:dwqVDr:T:ph")) != EOF) |
| 708 | #endif /* __GNU_LIBRARY__ */ | 702 | #endif /* __GNU_LIBRARY__ */ |
| 709 | switch (o) { | 703 | switch (o) { |
| 710 | case 'a': | 704 | case 'a': |
| @@ -722,9 +716,6 @@ int main(int argc, char **argv) | |||
| 722 | case 'V': | 716 | case 'V': |
| 723 | fputs("genksyms version 2.5.60\n", stderr); | 717 | fputs("genksyms version 2.5.60\n", stderr); |
| 724 | break; | 718 | break; |
| 725 | case 'A': | ||
| 726 | flag_asm = 1; | ||
| 727 | break; | ||
| 728 | case 'D': | 719 | case 'D': |
| 729 | flag_dump_defs = 1; | 720 | flag_dump_defs = 1; |
| 730 | break; | 721 | break; |
diff --git a/scripts/genksyms/keywords.c_shipped b/scripts/genksyms/keywords.c_shipped index 83484fe93ede..971e0113ae7a 100644 --- a/scripts/genksyms/keywords.c_shipped +++ b/scripts/genksyms/keywords.c_shipped | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* ANSI-C code produced by gperf version 3.0.1 */ | 1 | /* ANSI-C code produced by gperf version 3.0.2 */ |
| 2 | /* Command-line: gperf -L ANSI-C -a -C -E -g -H is_reserved_hash -k '1,3,$' -N is_reserved_word -p -t scripts/genksyms/keywords.gperf */ | 2 | /* Command-line: gperf -L ANSI-C -a -C -E -g -H is_reserved_hash -k '1,3,$' -N is_reserved_word -p -t scripts/genksyms/keywords.gperf */ |
| 3 | 3 | ||
| 4 | #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ | 4 | #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ |
| @@ -32,7 +32,7 @@ | |||
| 32 | 32 | ||
| 33 | #line 3 "scripts/genksyms/keywords.gperf" | 33 | #line 3 "scripts/genksyms/keywords.gperf" |
| 34 | struct resword { const char *name; int token; }; | 34 | struct resword { const char *name; int token; }; |
| 35 | /* maximum key range = 64, duplicates = 0 */ | 35 | /* maximum key range = 62, duplicates = 0 */ |
| 36 | 36 | ||
| 37 | #ifdef __GNUC__ | 37 | #ifdef __GNUC__ |
| 38 | __inline | 38 | __inline |
| @@ -46,32 +46,32 @@ is_reserved_hash (register const char *str, register unsigned int len) | |||
| 46 | { | 46 | { |
| 47 | static const unsigned char asso_values[] = | 47 | static const unsigned char asso_values[] = |
| 48 | { | 48 | { |
| 49 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 49 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 50 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 50 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 51 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 51 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 52 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 52 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 53 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 53 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 54 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 54 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 55 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 0, | 55 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 5, |
| 56 | 67, 67, 67, 67, 67, 67, 15, 67, 67, 67, | 56 | 65, 65, 65, 65, 65, 65, 35, 65, 65, 65, |
| 57 | 0, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 57 | 0, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 58 | 67, 67, 67, 67, 67, 0, 67, 0, 67, 5, | 58 | 65, 65, 65, 65, 65, 0, 65, 0, 65, 5, |
| 59 | 25, 20, 15, 30, 67, 15, 67, 67, 10, 0, | 59 | 20, 15, 10, 30, 65, 15, 65, 65, 20, 0, |
| 60 | 10, 40, 20, 67, 10, 5, 0, 10, 15, 67, | 60 | 10, 35, 20, 65, 10, 5, 0, 10, 5, 65, |
| 61 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 61 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 62 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 62 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 63 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 63 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 64 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 64 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 65 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 65 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 66 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 66 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 67 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 67 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 68 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 68 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 69 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 69 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 70 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 70 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 71 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 71 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 72 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 72 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 73 | 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, | 73 | 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, |
| 74 | 67, 67, 67, 67, 67, 67 | 74 | 65, 65, 65, 65, 65, 65 |
| 75 | }; | 75 | }; |
| 76 | return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]] + asso_values[(unsigned char)str[len - 1]]; | 76 | return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]] + asso_values[(unsigned char)str[len - 1]]; |
| 77 | } | 77 | } |
| @@ -84,119 +84,116 @@ is_reserved_word (register const char *str, register unsigned int len) | |||
| 84 | { | 84 | { |
| 85 | enum | 85 | enum |
| 86 | { | 86 | { |
| 87 | TOTAL_KEYWORDS = 45, | 87 | TOTAL_KEYWORDS = 43, |
| 88 | MIN_WORD_LENGTH = 3, | 88 | MIN_WORD_LENGTH = 3, |
| 89 | MAX_WORD_LENGTH = 24, | 89 | MAX_WORD_LENGTH = 24, |
| 90 | MIN_HASH_VALUE = 3, | 90 | MIN_HASH_VALUE = 3, |
| 91 | MAX_HASH_VALUE = 66 | 91 | MAX_HASH_VALUE = 64 |
| 92 | }; | 92 | }; |
| 93 | 93 | ||
| 94 | static const struct resword wordlist[] = | 94 | static const struct resword wordlist[] = |
| 95 | { | 95 | { |
| 96 | {""}, {""}, {""}, | 96 | {""}, {""}, {""}, |
| 97 | #line 28 "scripts/genksyms/keywords.gperf" | 97 | #line 26 "scripts/genksyms/keywords.gperf" |
| 98 | {"asm", ASM_KEYW}, | 98 | {"asm", ASM_KEYW}, |
| 99 | {""}, | 99 | {""}, |
| 100 | #line 10 "scripts/genksyms/keywords.gperf" | 100 | #line 8 "scripts/genksyms/keywords.gperf" |
| 101 | {"__asm", ASM_KEYW}, | 101 | {"__asm", ASM_KEYW}, |
| 102 | {""}, | 102 | {""}, |
| 103 | #line 11 "scripts/genksyms/keywords.gperf" | 103 | #line 9 "scripts/genksyms/keywords.gperf" |
| 104 | {"__asm__", ASM_KEYW}, | 104 | {"__asm__", ASM_KEYW}, |
| 105 | {""}, {""}, | 105 | {""}, {""}, |
| 106 | #line 54 "scripts/genksyms/keywords.gperf" | 106 | #line 52 "scripts/genksyms/keywords.gperf" |
| 107 | {"__typeof__", TYPEOF_KEYW}, | 107 | {"__typeof__", TYPEOF_KEYW}, |
| 108 | {""}, | 108 | {""}, |
| 109 | #line 14 "scripts/genksyms/keywords.gperf" | 109 | #line 12 "scripts/genksyms/keywords.gperf" |
| 110 | {"__const", CONST_KEYW}, | 110 | {"__const", CONST_KEYW}, |
| 111 | #line 13 "scripts/genksyms/keywords.gperf" | 111 | #line 11 "scripts/genksyms/keywords.gperf" |
| 112 | {"__attribute__", ATTRIBUTE_KEYW}, | 112 | {"__attribute__", ATTRIBUTE_KEYW}, |
| 113 | #line 15 "scripts/genksyms/keywords.gperf" | 113 | #line 13 "scripts/genksyms/keywords.gperf" |
| 114 | {"__const__", CONST_KEYW}, | 114 | {"__const__", CONST_KEYW}, |
| 115 | #line 20 "scripts/genksyms/keywords.gperf" | 115 | #line 18 "scripts/genksyms/keywords.gperf" |
| 116 | {"__signed__", SIGNED_KEYW}, | 116 | {"__signed__", SIGNED_KEYW}, |
| 117 | #line 46 "scripts/genksyms/keywords.gperf" | 117 | #line 44 "scripts/genksyms/keywords.gperf" |
| 118 | {"static", STATIC_KEYW}, | 118 | {"static", STATIC_KEYW}, |
| 119 | {""}, | 119 | #line 20 "scripts/genksyms/keywords.gperf" |
| 120 | #line 41 "scripts/genksyms/keywords.gperf" | 120 | {"__volatile__", VOLATILE_KEYW}, |
| 121 | #line 39 "scripts/genksyms/keywords.gperf" | ||
| 121 | {"int", INT_KEYW}, | 122 | {"int", INT_KEYW}, |
| 122 | #line 34 "scripts/genksyms/keywords.gperf" | 123 | #line 32 "scripts/genksyms/keywords.gperf" |
| 123 | {"char", CHAR_KEYW}, | 124 | {"char", CHAR_KEYW}, |
| 124 | #line 35 "scripts/genksyms/keywords.gperf" | 125 | #line 33 "scripts/genksyms/keywords.gperf" |
| 125 | {"const", CONST_KEYW}, | 126 | {"const", CONST_KEYW}, |
| 126 | #line 47 "scripts/genksyms/keywords.gperf" | 127 | #line 45 "scripts/genksyms/keywords.gperf" |
| 127 | {"struct", STRUCT_KEYW}, | 128 | {"struct", STRUCT_KEYW}, |
| 128 | #line 26 "scripts/genksyms/keywords.gperf" | 129 | #line 24 "scripts/genksyms/keywords.gperf" |
| 129 | {"__restrict__", RESTRICT_KEYW}, | 130 | {"__restrict__", RESTRICT_KEYW}, |
| 130 | #line 27 "scripts/genksyms/keywords.gperf" | ||
| 131 | {"restrict", RESTRICT_KEYW}, | ||
| 132 | #line 7 "scripts/genksyms/keywords.gperf" | ||
| 133 | {"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW}, | ||
| 134 | #line 18 "scripts/genksyms/keywords.gperf" | ||
| 135 | {"__inline__", INLINE_KEYW}, | ||
| 136 | {""}, | ||
| 137 | #line 22 "scripts/genksyms/keywords.gperf" | ||
| 138 | {"__volatile__", VOLATILE_KEYW}, | ||
| 139 | #line 5 "scripts/genksyms/keywords.gperf" | ||
| 140 | {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW}, | ||
| 141 | #line 25 "scripts/genksyms/keywords.gperf" | 131 | #line 25 "scripts/genksyms/keywords.gperf" |
| 132 | {"restrict", RESTRICT_KEYW}, | ||
| 133 | #line 23 "scripts/genksyms/keywords.gperf" | ||
| 142 | {"_restrict", RESTRICT_KEYW}, | 134 | {"_restrict", RESTRICT_KEYW}, |
| 143 | {""}, | ||
| 144 | #line 12 "scripts/genksyms/keywords.gperf" | ||
| 145 | {"__attribute", ATTRIBUTE_KEYW}, | ||
| 146 | #line 6 "scripts/genksyms/keywords.gperf" | ||
| 147 | {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW}, | ||
| 148 | #line 16 "scripts/genksyms/keywords.gperf" | 135 | #line 16 "scripts/genksyms/keywords.gperf" |
| 136 | {"__inline__", INLINE_KEYW}, | ||
| 137 | #line 10 "scripts/genksyms/keywords.gperf" | ||
| 138 | {"__attribute", ATTRIBUTE_KEYW}, | ||
| 139 | {""}, | ||
| 140 | #line 14 "scripts/genksyms/keywords.gperf" | ||
| 149 | {"__extension__", EXTENSION_KEYW}, | 141 | {"__extension__", EXTENSION_KEYW}, |
| 150 | #line 37 "scripts/genksyms/keywords.gperf" | 142 | #line 35 "scripts/genksyms/keywords.gperf" |
| 151 | {"enum", ENUM_KEYW}, | 143 | {"enum", ENUM_KEYW}, |
| 152 | #line 8 "scripts/genksyms/keywords.gperf" | 144 | #line 19 "scripts/genksyms/keywords.gperf" |
| 153 | {"EXPORT_UNUSED_SYMBOL", EXPORT_SYMBOL_KEYW}, | 145 | {"__volatile", VOLATILE_KEYW}, |
| 154 | #line 38 "scripts/genksyms/keywords.gperf" | 146 | #line 36 "scripts/genksyms/keywords.gperf" |
| 155 | {"extern", EXTERN_KEYW}, | 147 | {"extern", EXTERN_KEYW}, |
| 156 | {""}, | 148 | {""}, |
| 157 | #line 19 "scripts/genksyms/keywords.gperf" | 149 | #line 17 "scripts/genksyms/keywords.gperf" |
| 158 | {"__signed", SIGNED_KEYW}, | 150 | {"__signed", SIGNED_KEYW}, |
| 159 | #line 9 "scripts/genksyms/keywords.gperf" | 151 | #line 7 "scripts/genksyms/keywords.gperf" |
| 160 | {"EXPORT_UNUSED_SYMBOL_GPL", EXPORT_SYMBOL_KEYW}, | 152 | {"EXPORT_SYMBOL_GPL_FUTURE", EXPORT_SYMBOL_KEYW}, |
| 161 | #line 49 "scripts/genksyms/keywords.gperf" | 153 | {""}, |
| 162 | {"union", UNION_KEYW}, | 154 | #line 51 "scripts/genksyms/keywords.gperf" |
| 163 | #line 53 "scripts/genksyms/keywords.gperf" | ||
| 164 | {"typeof", TYPEOF_KEYW}, | 155 | {"typeof", TYPEOF_KEYW}, |
| 165 | #line 48 "scripts/genksyms/keywords.gperf" | 156 | #line 46 "scripts/genksyms/keywords.gperf" |
| 166 | {"typedef", TYPEDEF_KEYW}, | 157 | {"typedef", TYPEDEF_KEYW}, |
| 167 | #line 17 "scripts/genksyms/keywords.gperf" | 158 | #line 15 "scripts/genksyms/keywords.gperf" |
| 168 | {"__inline", INLINE_KEYW}, | 159 | {"__inline", INLINE_KEYW}, |
| 169 | #line 33 "scripts/genksyms/keywords.gperf" | 160 | #line 31 "scripts/genksyms/keywords.gperf" |
| 170 | {"auto", AUTO_KEYW}, | 161 | {"auto", AUTO_KEYW}, |
| 171 | #line 21 "scripts/genksyms/keywords.gperf" | 162 | #line 47 "scripts/genksyms/keywords.gperf" |
| 172 | {"__volatile", VOLATILE_KEYW}, | 163 | {"union", UNION_KEYW}, |
| 173 | {""}, {""}, | 164 | {""}, {""}, |
| 174 | #line 50 "scripts/genksyms/keywords.gperf" | 165 | #line 48 "scripts/genksyms/keywords.gperf" |
| 175 | {"unsigned", UNSIGNED_KEYW}, | 166 | {"unsigned", UNSIGNED_KEYW}, |
| 176 | {""}, | 167 | #line 49 "scripts/genksyms/keywords.gperf" |
| 177 | #line 44 "scripts/genksyms/keywords.gperf" | 168 | {"void", VOID_KEYW}, |
| 169 | #line 42 "scripts/genksyms/keywords.gperf" | ||
| 178 | {"short", SHORT_KEYW}, | 170 | {"short", SHORT_KEYW}, |
| 179 | #line 40 "scripts/genksyms/keywords.gperf" | 171 | {""}, {""}, |
| 172 | #line 50 "scripts/genksyms/keywords.gperf" | ||
| 173 | {"volatile", VOLATILE_KEYW}, | ||
| 174 | {""}, | ||
| 175 | #line 37 "scripts/genksyms/keywords.gperf" | ||
| 176 | {"float", FLOAT_KEYW}, | ||
| 177 | #line 34 "scripts/genksyms/keywords.gperf" | ||
| 178 | {"double", DOUBLE_KEYW}, | ||
| 179 | {""}, | ||
| 180 | #line 5 "scripts/genksyms/keywords.gperf" | ||
| 181 | {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW}, | ||
| 182 | {""}, {""}, | ||
| 183 | #line 38 "scripts/genksyms/keywords.gperf" | ||
| 180 | {"inline", INLINE_KEYW}, | 184 | {"inline", INLINE_KEYW}, |
| 185 | #line 6 "scripts/genksyms/keywords.gperf" | ||
| 186 | {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW}, | ||
| 187 | #line 41 "scripts/genksyms/keywords.gperf" | ||
| 188 | {"register", REGISTER_KEYW}, | ||
| 181 | {""}, | 189 | {""}, |
| 182 | #line 52 "scripts/genksyms/keywords.gperf" | 190 | #line 22 "scripts/genksyms/keywords.gperf" |
| 183 | {"volatile", VOLATILE_KEYW}, | ||
| 184 | #line 42 "scripts/genksyms/keywords.gperf" | ||
| 185 | {"long", LONG_KEYW}, | ||
| 186 | #line 24 "scripts/genksyms/keywords.gperf" | ||
| 187 | {"_Bool", BOOL_KEYW}, | 191 | {"_Bool", BOOL_KEYW}, |
| 188 | {""}, {""}, | ||
| 189 | #line 43 "scripts/genksyms/keywords.gperf" | 192 | #line 43 "scripts/genksyms/keywords.gperf" |
| 190 | {"register", REGISTER_KEYW}, | 193 | {"signed", SIGNED_KEYW}, |
| 191 | #line 51 "scripts/genksyms/keywords.gperf" | 194 | {""}, {""}, |
| 192 | {"void", VOID_KEYW}, | 195 | #line 40 "scripts/genksyms/keywords.gperf" |
| 193 | #line 39 "scripts/genksyms/keywords.gperf" | 196 | {"long", LONG_KEYW} |
| 194 | {"float", FLOAT_KEYW}, | ||
| 195 | #line 36 "scripts/genksyms/keywords.gperf" | ||
| 196 | {"double", DOUBLE_KEYW}, | ||
| 197 | {""}, {""}, {""}, {""}, | ||
| 198 | #line 45 "scripts/genksyms/keywords.gperf" | ||
| 199 | {"signed", SIGNED_KEYW} | ||
| 200 | }; | 197 | }; |
| 201 | 198 | ||
| 202 | if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) | 199 | if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) |
diff --git a/scripts/genksyms/keywords.gperf b/scripts/genksyms/keywords.gperf index 8abe7ab8d88f..5ef3733225fb 100644 --- a/scripts/genksyms/keywords.gperf +++ b/scripts/genksyms/keywords.gperf | |||
| @@ -5,8 +5,6 @@ struct resword { const char *name; int token; } | |||
| 5 | EXPORT_SYMBOL, EXPORT_SYMBOL_KEYW | 5 | EXPORT_SYMBOL, EXPORT_SYMBOL_KEYW |
| 6 | EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_KEYW | 6 | EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_KEYW |
| 7 | EXPORT_SYMBOL_GPL_FUTURE, EXPORT_SYMBOL_KEYW | 7 | EXPORT_SYMBOL_GPL_FUTURE, EXPORT_SYMBOL_KEYW |
| 8 | EXPORT_UNUSED_SYMBOL, EXPORT_SYMBOL_KEYW | ||
| 9 | EXPORT_UNUSED_SYMBOL_GPL, EXPORT_SYMBOL_KEYW | ||
| 10 | __asm, ASM_KEYW | 8 | __asm, ASM_KEYW |
| 11 | __asm__, ASM_KEYW | 9 | __asm__, ASM_KEYW |
| 12 | __attribute, ATTRIBUTE_KEYW | 10 | __attribute, ATTRIBUTE_KEYW |
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 92758120a767..ad2434b26970 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c | |||
| @@ -130,9 +130,18 @@ static int read_symbol(FILE *in, struct sym_entry *s) | |||
| 130 | static int symbol_valid(struct sym_entry *s) | 130 | static int symbol_valid(struct sym_entry *s) |
| 131 | { | 131 | { |
| 132 | /* Symbols which vary between passes. Passes 1 and 2 must have | 132 | /* Symbols which vary between passes. Passes 1 and 2 must have |
| 133 | * identical symbol lists. | 133 | * identical symbol lists. The kallsyms_* symbols below are only added |
| 134 | * after pass 1, they would be included in pass 2 when --all-symbols is | ||
| 135 | * specified so exclude them to get a stable symbol list. | ||
| 134 | */ | 136 | */ |
| 135 | static char *special_symbols[] = { | 137 | static char *special_symbols[] = { |
| 138 | "kallsyms_addresses", | ||
| 139 | "kallsyms_num_syms", | ||
| 140 | "kallsyms_names", | ||
| 141 | "kallsyms_markers", | ||
| 142 | "kallsyms_token_table", | ||
| 143 | "kallsyms_token_index", | ||
| 144 | |||
| 136 | /* Exclude linker generated symbols which vary between passes */ | 145 | /* Exclude linker generated symbols which vary between passes */ |
| 137 | "_SDA_BASE_", /* ppc */ | 146 | "_SDA_BASE_", /* ppc */ |
| 138 | "_SDA2_BASE_", /* ppc */ | 147 | "_SDA2_BASE_", /* ppc */ |
| @@ -164,9 +173,7 @@ static int symbol_valid(struct sym_entry *s) | |||
| 164 | } | 173 | } |
| 165 | 174 | ||
| 166 | /* Exclude symbols which vary between passes. */ | 175 | /* Exclude symbols which vary between passes. */ |
| 167 | if (strstr((char *)s->sym + offset, "_compiled.") || | 176 | if (strstr((char *)s->sym + offset, "_compiled.")) |
| 168 | strncmp((char*)s->sym + offset, "__compound_literal.", 19) == 0 || | ||
| 169 | strncmp((char*)s->sym + offset, "__compound_literal$", 19) == 0) | ||
| 170 | return 0; | 177 | return 0; |
| 171 | 178 | ||
| 172 | for (i = 0; special_symbols[i]; i++) | 179 | for (i = 0; special_symbols[i]; i++) |
| @@ -543,10 +550,8 @@ int main(int argc, char **argv) | |||
| 543 | usage(); | 550 | usage(); |
| 544 | 551 | ||
| 545 | read_map(stdin); | 552 | read_map(stdin); |
| 546 | if (table_cnt) { | 553 | sort_symbols(); |
| 547 | sort_symbols(); | 554 | optimize_token_table(); |
| 548 | optimize_token_table(); | ||
| 549 | } | ||
| 550 | write_src(); | 555 | write_src(); |
| 551 | 556 | ||
| 552 | return 0; | 557 | return 0; |
diff --git a/scripts/mksysmap b/scripts/mksysmap index 1db316a3712b..6e133a0bae7a 100644 --- a/scripts/mksysmap +++ b/scripts/mksysmap | |||
| @@ -37,6 +37,9 @@ | |||
| 37 | 37 | ||
| 38 | # readprofile starts reading symbols when _stext is found, and | 38 | # readprofile starts reading symbols when _stext is found, and |
| 39 | # continue until it finds a symbol which is not either of 'T', 't', | 39 | # continue until it finds a symbol which is not either of 'T', 't', |
| 40 | # 'W' or 'w'. | 40 | # 'W' or 'w'. __crc_ are 'A' and placed in the middle |
| 41 | # so we just ignore them to let readprofile continue to work. | ||
| 42 | # (At least sparc64 has __crc_ in the middle). | ||
| 43 | |||
| 44 | $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2 | ||
| 41 | 45 | ||
| 42 | $NM -n $1 | grep -v '\( [aNUw] \)\|\( \$[adt]\)' > $2 | ||
diff --git a/scripts/strip-symbols b/scripts/strip-symbols deleted file mode 100644 index 29ee8c1a014b..000000000000 --- a/scripts/strip-symbols +++ /dev/null | |||
| @@ -1,22 +0,0 @@ | |||
| 1 | <*> | ||
| 2 | *.h | ||
| 3 | __compound_literal[$.][0-9]* | ||
| 4 | __crc_[a-zA-Z_]* | ||
| 5 | __exitcall_[a-zA-Z_]* | ||
| 6 | __func__[$.][0-9]* | ||
| 7 | __FUNCTION__[$.][0-9]* | ||
| 8 | gcc[0-9]_compiled[$.] | ||
| 9 | __initcall_[a-zA-Z_]* | ||
| 10 | __kcrctab_[a-zA-Z_]* | ||
| 11 | __kstrtab_[a-zA-Z_]* | ||
| 12 | __ksymtab_[a-zA-Z_]* | ||
| 13 | __mod_[a-zA-Z_]*[0-9] | ||
| 14 | __module_depends | ||
| 15 | __param_[a-zA-Z_]* | ||
| 16 | __pci_fixup_*PCI_ANY_IDPCI_ANY_ID* | ||
| 17 | __pci_fixup_*PCI_ANY_IDPCI_DEVICE_ID_* | ||
| 18 | __pci_fixup_*PCI_VENDOR_ID_*PCI_ANY_ID* | ||
| 19 | __pci_fixup_*PCI_VENDOR_ID_*PCI_DEVICE_ID_* | ||
| 20 | __PRETTY_FUNCTION__[$.][0-9]* | ||
| 21 | __setup_[a-zA-Z_]* | ||
| 22 | ____versions | ||
