Revert "kbuild: strip generated symbols from *.ko"
This reverts commitad7a953c52
. And commit: ("allow stripping of generated symbols under CONFIG_KALLSYMS_ALL")9bb482476c
These stripping patches has caused a set of issues: 1) People have reported compatibility issues with binutils due to lack of support for `--strip-unneeded-symbols' with objcopy 2.15.92.0.2 Reported by: Wenji 2) ccache and distcc no longer works as expeced Reported by: Ted, Roland, + others 3) The installed modules increased a lot in size Reported by: Ted, Davej + others Reported-by: Wenji Huang <wenji.huang@oracle.com> Reported-by: "Theodore Ts'o" <tytso@mit.edu> Reported-by: Dave Jones <davej@redhat.com> Reported-by: Roland McGrath <roland@redhat.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
@@ -151,16 +151,16 @@ cmd_cc_i_c = $(CPP) $(c_flags) -o $@ $<
|
||||
$(obj)/%.i: $(src)/%.c FORCE
|
||||
$(call if_changed_dep,cc_i_c)
|
||||
|
||||
cmd_genksyms = \
|
||||
cmd_gensymtypes = \
|
||||
$(CPP) -D__GENKSYMS__ $(c_flags) $< | \
|
||||
$(GENKSYMS) -T $@ -A -a $(ARCH) \
|
||||
$(GENKSYMS) -T $@ -a $(ARCH) \
|
||||
$(if $(KBUILD_PRESERVE),-p) \
|
||||
$(if $(1),-r $(firstword $(wildcard $(@:.symtypes=.symref) /dev/null)))
|
||||
|
||||
quiet_cmd_cc_symtypes_c = SYM $(quiet_modtag) $@
|
||||
cmd_cc_symtypes_c = \
|
||||
set -e; \
|
||||
$(call cmd_genksyms, true) >/dev/null; \
|
||||
$(call cmd_gensymtypes, true) >/dev/null; \
|
||||
test -s $@ || rm -f $@
|
||||
|
||||
$(obj)/%.symtypes : $(src)/%.c FORCE
|
||||
@@ -177,38 +177,28 @@ cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
|
||||
|
||||
else
|
||||
# When module versioning is enabled the following steps are executed:
|
||||
# o compile a .tmp_<file>.s from <file>.c
|
||||
# o if .tmp_<file>.s doesn't contain a __ksymtab version, i.e. does
|
||||
# not export symbols, we just assemble .tmp_<file>.s to <file>.o and
|
||||
# o compile a .tmp_<file>.o from <file>.c
|
||||
# o if .tmp_<file>.o doesn't contain a __ksymtab version, i.e. does
|
||||
# not export symbols, we just rename .tmp_<file>.o to <file>.o and
|
||||
# are done.
|
||||
# o otherwise, we calculate symbol versions using the good old
|
||||
# genksyms on the preprocessed source and postprocess them in a way
|
||||
# that they are usable as assembly source
|
||||
# o assemble <file>.o from .tmp_<file>.s forcing inclusion of directives
|
||||
# defining the actual values of __crc_*, followed by objcopy-ing them
|
||||
# to force these symbols to be local to permit stripping them later.
|
||||
s_file = $(@D)/.tmp_$(@F:.o=.s)
|
||||
v_file = $(@D)/.tmp_$(@F:.o=.v)
|
||||
tmp_o_file = $(@D)/.tmp_$(@F)
|
||||
no_g_c_flags = $(filter-out -g%,$(c_flags))
|
||||
|
||||
cmd_cc_o_c = $(CC) $(c_flags) -S -o $(s_file) $<
|
||||
# that they are usable as a linker script
|
||||
# o generate <file>.o from .tmp_<file>.o using the linker to
|
||||
# replace the unresolved symbols __crc_exported_symbol with
|
||||
# the actual value of the checksum generated by genksyms
|
||||
|
||||
cmd_cc_o_c = $(CC) $(c_flags) -c -o $(@D)/.tmp_$(@F) $<
|
||||
cmd_modversions = \
|
||||
if grep -q __ksymtab $(s_file); then \
|
||||
if $(call cmd_genksyms, $(KBUILD_SYMTYPES)) > $(v_file) \
|
||||
&& $(CC) $(no_g_c_flags) -c -Wa,$(v_file) \
|
||||
-o $(tmp_o_file) $(s_file) \
|
||||
&& $(OBJCOPY) -L '__crc_*' -L '___crc_*' -w \
|
||||
$(tmp_o_file) $@; \
|
||||
then \
|
||||
: ; \
|
||||
else \
|
||||
rm -f $@; exit 1; \
|
||||
fi; \
|
||||
if $(OBJDUMP) -h $(@D)/.tmp_$(@F) | grep -q __ksymtab; then \
|
||||
$(call cmd_gensymtypes, $(KBUILD_SYMTYPES)) \
|
||||
> $(@D)/.tmp_$(@F:.o=.ver); \
|
||||
\
|
||||
$(LD) $(LDFLAGS) -r -o $@ $(@D)/.tmp_$(@F) \
|
||||
-T $(@D)/.tmp_$(@F:.o=.ver); \
|
||||
rm -f $(@D)/.tmp_$(@F) $(@D)/.tmp_$(@F:.o=.ver); \
|
||||
else \
|
||||
rm -f $(v_file); \
|
||||
$(CC) $(no_g_c_flags) -c -o $@ $(s_file); \
|
||||
mv -f $(@D)/.tmp_$(@F) $@; \
|
||||
fi;
|
||||
endif
|
||||
|
||||
@@ -225,12 +215,7 @@ define rule_cc_o_c
|
||||
$(cmd_record_mcount) \
|
||||
scripts/basic/fixdep $(depfile) $@ '$(call make-cmd,cc_o_c)' > \
|
||||
$(dot-target).tmp; \
|
||||
if [ -r $(@D)/.tmp_$(@F:.o=.v) ]; then \
|
||||
echo >> $(dot-target).tmp; \
|
||||
echo '$@: $(GENKSYMS)' >> $(dot-target).tmp; \
|
||||
echo '$(GENKSYMS):: ;' >> $(dot-target).tmp; \
|
||||
fi; \
|
||||
rm -f $(depfile) $(@D)/.tmp_$(@F:.o=.?); \
|
||||
rm -f $(depfile); \
|
||||
mv -f $(dot-target).tmp $(dot-target).cmd
|
||||
endef
|
||||
|
||||
|
Reference in New Issue
Block a user