aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-01-26 18:10:37 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-01-26 18:10:37 -0500
commit2034563ca323ee45f37a32911550d21c1f1e9626 (patch)
treecb9cfd052df2caa736f95890580b9de39276b77f
parent924d26df6b774b85c8b4548189b20e34f904a149 (diff)
parentdf291fa993c506da89a89264ff8166bccd172a14 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes
* git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes: kbuild: fix kbuild.txt typos kbuild: print usage with no arguments in scripts/config Revert "kbuild: strip generated symbols from *.ko"
-rw-r--r--Documentation/kbuild/kbuild.txt29
-rw-r--r--Makefile59
-rw-r--r--arch/x86/scripts/strip-symbols1
-rw-r--r--init/Kconfig7
-rw-r--r--kernel/kallsyms.c16
-rw-r--r--scripts/Makefile.build55
-rw-r--r--scripts/Makefile.modinst3
-rwxr-xr-xscripts/config4
-rw-r--r--scripts/genksyms/genksyms.c21
-rw-r--r--scripts/genksyms/keywords.c_shipped189
-rw-r--r--scripts/genksyms/keywords.gperf2
-rw-r--r--scripts/kallsyms.c21
-rw-r--r--scripts/mksysmap7
-rw-r--r--scripts/strip-symbols22
14 files changed, 185 insertions, 251 deletions
diff --git a/Documentation/kbuild/kbuild.txt b/Documentation/kbuild/kbuild.txt
index 923f9ddee8f..f3355b6812d 100644
--- a/Documentation/kbuild/kbuild.txt
+++ b/Documentation/kbuild/kbuild.txt
@@ -3,7 +3,7 @@ Environment variables
3KCPPFLAGS 3KCPPFLAGS
4-------------------------------------------------- 4--------------------------------------------------
5Additional options to pass when preprocessing. The preprocessing options 5Additional options to pass when preprocessing. The preprocessing options
6will be used in all cases where kbuild do preprocessing including 6will be used in all cases where kbuild does preprocessing including
7building C files and assembler files. 7building C files and assembler files.
8 8
9KAFLAGS 9KAFLAGS
@@ -16,7 +16,7 @@ Additional options to the C compiler.
16 16
17KBUILD_VERBOSE 17KBUILD_VERBOSE
18-------------------------------------------------- 18--------------------------------------------------
19Set the kbuild verbosity. Can be assinged same values as "V=...". 19Set the kbuild verbosity. Can be assigned same values as "V=...".
20See make help for the full list. 20See make help for the full list.
21Setting "V=..." takes precedence over KBUILD_VERBOSE. 21Setting "V=..." takes precedence over KBUILD_VERBOSE.
22 22
@@ -35,14 +35,14 @@ KBUILD_OUTPUT
35-------------------------------------------------- 35--------------------------------------------------
36Specify the output directory when building the kernel. 36Specify the output directory when building the kernel.
37The output directory can also be specificed using "O=...". 37The output directory can also be specificed using "O=...".
38Setting "O=..." takes precedence over KBUILD_OUTPUT 38Setting "O=..." takes precedence over KBUILD_OUTPUT.
39 39
40ARCH 40ARCH
41-------------------------------------------------- 41--------------------------------------------------
42Set ARCH to the architecture to be built. 42Set ARCH to the architecture to be built.
43In most cases the name of the architecture is the same as the 43In most cases the name of the architecture is the same as the
44directory name found in the arch/ directory. 44directory name found in the arch/ directory.
45But some architectures suach as x86 and sparc has aliases. 45But some architectures such as x86 and sparc have aliases.
46x86: i386 for 32 bit, x86_64 for 64 bit 46x86: i386 for 32 bit, x86_64 for 64 bit
47sparc: sparc for 32 bit, sparc64 for 64 bit 47sparc: sparc for 32 bit, sparc64 for 64 bit
48 48
@@ -63,7 +63,7 @@ CF is often used on the command-line like this:
63INSTALL_PATH 63INSTALL_PATH
64-------------------------------------------------- 64--------------------------------------------------
65INSTALL_PATH specifies where to place the updated kernel and system map 65INSTALL_PATH specifies where to place the updated kernel and system map
66images. Default is /boot, but you can set it to other values 66images. Default is /boot, but you can set it to other values.
67 67
68 68
69MODLIB 69MODLIB
@@ -90,7 +90,7 @@ INSTALL_MOD_STRIP will used as the options to the strip command.
90 90
91INSTALL_FW_PATH 91INSTALL_FW_PATH
92-------------------------------------------------- 92--------------------------------------------------
93INSTALL_FW_PATH specify where to install the firmware blobs. 93INSTALL_FW_PATH specifies where to install the firmware blobs.
94The default value is: 94The 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
100INSTALL_HDR_PATH 100INSTALL_HDR_PATH
101-------------------------------------------------- 101--------------------------------------------------
102INSTALL_HDR_PATH specify where to install user space headers when 102INSTALL_HDR_PATH specifies where to install user space headers when
103executing "make headers_*". 103executing "make headers_*".
104The default value is: 104The default value is:
105 105
@@ -112,22 +112,23 @@ The value can be overridden in which case the default value is ignored.
112 112
113KBUILD_MODPOST_WARN 113KBUILD_MODPOST_WARN
114-------------------------------------------------- 114--------------------------------------------------
115KBUILD_MODPOST_WARN can be set to avoid error out in case of undefined 115KBUILD_MODPOST_WARN can be set to avoid errors in case of undefined
116symbols in the final module linking stage. 116symbols in the final module linking stage. It changes such errors
117into warnings.
117 118
118KBUILD_MODPOST_FINAL 119KBUILD_MODPOST_NOFINAL
119-------------------------------------------------- 120--------------------------------------------------
120KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules. 121KBUILD_MODPOST_NOFINAL can be set to skip the final link of modules.
121This is solely usefull to speed up test compiles. 122This is solely useful to speed up test compiles.
122 123
123KBUILD_EXTRA_SYMBOLS 124KBUILD_EXTRA_SYMBOLS
124-------------------------------------------------- 125--------------------------------------------------
125For modules use symbols from another modules. 126For modules that use symbols from other modules.
126See more details in modules.txt. 127See more details in modules.txt.
127 128
128ALLSOURCE_ARCHS 129ALLSOURCE_ARCHS
129-------------------------------------------------- 130--------------------------------------------------
130For tags/TAGS/cscope targets, you can specify more than one archs 131For tags/TAGS/cscope targets, you can specify more than one arch
131to be included in the databases, separated by blankspace. e.g. 132to 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
diff --git a/Makefile b/Makefile
index 93b81bc10e1..cf9e20dac86 100644
--- a/Makefile
+++ b/Makefile
@@ -610,25 +610,20 @@ export INSTALL_PATH ?= /boot
610MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE) 610MODLIB = $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE)
611export MODLIB 611export MODLIB
612 612
613strip-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
621ifdef INSTALL_MOD_STRIP 619ifdef INSTALL_MOD_STRIP
622ifeq ($(INSTALL_MOD_STRIP),1) 620ifeq ($(INSTALL_MOD_STRIP),1)
623mod_strip_cmd = $(OBJCOPY) --strip-debug 621mod_strip_cmd = $(STRIP) --strip-debug
624ifeq ($(CONFIG_KALLSYMS_ALL),$(CONFIG_KALLSYMS_STRIP_GENERATED))
625mod_strip_cmd += --wildcard $(addprefix --strip-symbols ,$(strip-symbols))
626endif
627else 622else
628mod_strip_cmd = $(OBJCOPY) $(INSTALL_MOD_STRIP) 623mod_strip_cmd = $(STRIP) $(INSTALL_MOD_STRIP)
629endif # INSTALL_MOD_STRIP=1 624endif # INSTALL_MOD_STRIP=1
630else 625else
631mod_strip_cmd = false 626mod_strip_cmd = true
632endif # INSTALL_MOD_STRIP 627endif # INSTALL_MOD_STRIP
633export mod_strip_cmd 628export mod_strip_cmd
634 629
@@ -758,7 +753,6 @@ last_kallsyms := 2
758endif 753endif
759 754
760kallsyms.o := .tmp_kallsyms$(last_kallsyms).o 755kallsyms.o := .tmp_kallsyms$(last_kallsyms).o
761kallsyms.h := $(wildcard include/config/kallsyms/*.h) $(wildcard include/config/kallsyms/*/*.h)
762 756
763define verify_kallsyms 757define 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
785quiet_cmd_kallsyms = KSYM $@ 779quiet_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
789quiet_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
796ifeq ($(CONFIG_KALLSYMS_STRIP_GENERATED),y) 786.tmp_kallsyms%.S: .tmp_vmlinux% $(KALLSYMS)
797strip-ext := .stripped
798endif
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
808ifneq ($(CONFIG_DEBUG_INFO),y)
809.tmp_vmlinux%: LDFLAGS_vmlinux += -S
810endif
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 a2f1ccb827c..00000000000
--- 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 b9d1dd22210..f068071fcc5 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -725,13 +725,6 @@ config KALLSYMS_ALL
725 725
726 Say N. 726 Say N.
727 727
728config 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
735config KALLSYMS_EXTRA_PASS 728config 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 e694afa0eb8..7b8b0f21a5b 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
33extern const unsigned long kallsyms_addresses[]; 33/* These will be re-linked against their real values during the second link stage */
34extern const u8 kallsyms_names[]; 34extern const unsigned long kallsyms_addresses[] __attribute__((weak));
35extern 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 */
39extern const unsigned long kallsyms_num_syms 40extern const unsigned long kallsyms_num_syms
40 __attribute__((__section__(".rodata"))); 41__attribute__((weak, section(".rodata")));
41 42
42extern const u8 kallsyms_token_table[]; 43extern const u8 kallsyms_token_table[] __attribute__((weak));
43extern const u16 kallsyms_token_index[]; 44extern const u16 kallsyms_token_index[] __attribute__((weak));
44 45
45extern const unsigned long kallsyms_markers[]; 46extern const unsigned long kallsyms_markers[] __attribute__((weak));
46 47
47static inline int is_kernel_inittext(unsigned long addr) 48static 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 5d900307de3..c7de8b39fcf 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
154cmd_genksyms = \ 154cmd_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
160quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@ 160quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@
161cmd_cc_symtypes_c = \ 161cmd_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
178else 178else
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
190s_file = $(@D)/.tmp_$(@F:.o=.s)
191v_file = $(@D)/.tmp_$(@F:.o=.v)
192tmp_o_file = $(@D)/.tmp_$(@F)
193no_g_c_flags = $(filter-out -g%,$(c_flags))
194
195cmd_cc_o_c = $(CC) $(c_flags) -S -o $(s_file) $<
196 190
191cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $<
197cmd_modversions = \ 192cmd_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;
213endif 203endif
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
235endef 220endef
236 221
diff --git a/scripts/Makefile.modinst b/scripts/Makefile.modinst
index a5122dce126..efa5d940e63 100644
--- a/scripts/Makefile.modinst
+++ b/scripts/Makefile.modinst
@@ -17,8 +17,7 @@ __modinst: $(modules)
17 @: 17 @:
18 18
19quiet_cmd_modules_install = INSTALL $@ 19quiet_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
24INSTALL_MOD_DIR ?= extra 23INSTALL_MOD_DIR ?= extra
diff --git a/scripts/config b/scripts/config
index 68b9761cdc3..db6084b78a1 100755
--- a/scripts/config
+++ b/scripts/config
@@ -60,6 +60,10 @@ else
60 FN=.config 60 FN=.config
61fi 61fi
62 62
63if [ "$1" = "" ] ; then
64 usage
65fi
66
63while [ "$1" != "" ] ; do 67while [ "$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 f8bb4cabd62..3a8297b5184 100644
--- a/scripts/genksyms/genksyms.c
+++ b/scripts/genksyms/genksyms.c
@@ -43,7 +43,7 @@ int cur_line = 1;
43char *cur_filename; 43char *cur_filename;
44 44
45static int flag_debug, flag_dump_defs, flag_reference, flag_dump_types, 45static int flag_debug, flag_dump_defs, flag_reference, flag_dump_types,
46 flag_preserve, flag_warnings, flag_asm; 46 flag_preserve, flag_warnings;
47static const char *arch = ""; 47static const char *arch = "";
48static const char *mod_prefix = ""; 48static 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
652static void genksyms_usage(void) 649static 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 83484fe93ed..971e0113ae7 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"
34struct resword { const char *name; int token; }; 34struct 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 8abe7ab8d88..5ef3733225f 100644
--- a/scripts/genksyms/keywords.gperf
+++ b/scripts/genksyms/keywords.gperf
@@ -5,8 +5,6 @@ struct resword { const char *name; int token; }
5EXPORT_SYMBOL, EXPORT_SYMBOL_KEYW 5EXPORT_SYMBOL, EXPORT_SYMBOL_KEYW
6EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_KEYW 6EXPORT_SYMBOL_GPL, EXPORT_SYMBOL_KEYW
7EXPORT_SYMBOL_GPL_FUTURE, EXPORT_SYMBOL_KEYW 7EXPORT_SYMBOL_GPL_FUTURE, EXPORT_SYMBOL_KEYW
8EXPORT_UNUSED_SYMBOL, EXPORT_SYMBOL_KEYW
9EXPORT_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 92758120a76..ad2434b2697 100644
--- a/scripts/kallsyms.c
+++ b/scripts/kallsyms.c
@@ -130,9 +130,18 @@ static int read_symbol(FILE *in, struct sym_entry *s)
130static int symbol_valid(struct sym_entry *s) 130static 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 1db316a3712..6e133a0bae7 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 29ee8c1a014..00000000000
--- 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]*
8gcc[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