kbuild: link symbol CRCs at final link, removing CONFIG_MODULE_REL_CRCS
[linux-2.6-block.git] / scripts / Makefile.build
index a1023868775fb393283e8ddd2e4784e594ef659c..ddd9080fc02851812f13f2e429118f1cc30027ed 100644 (file)
@@ -128,7 +128,6 @@ $(obj)/%.i: $(src)/%.c FORCE
 
 genksyms = scripts/genksyms/genksyms           \
        $(if $(1), -T $(2))                     \
-       $(if $(CONFIG_MODULE_REL_CRCS), -R)     \
        $(if $(KBUILD_PRESERVE), -p)            \
        -r $(or $(wildcard $(2:.symtypes=.symref)), /dev/null)
 
@@ -162,19 +161,11 @@ ifdef CONFIG_MODVERSIONS
 # o if <file>.o doesn't contain a __ksymtab version, i.e. does
 #   not export symbols, it's 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 a linker script
-# o generate .tmp_<file>.o from <file>.o using the linker to
-#   replace the unresolved symbols __crc_exported_symbol with
-#   the actual value of the checksum generated by genksyms
-# o remove .tmp_<file>.o to <file>.o
+#   genksyms on the preprocessed source and dump them into the .cmd file.
+# o modpost will extract versions from that file and create *.c files that will
+#   be compiled and linked to the kernel and/or modules.
 
-# Generate .o.symversions files for each .o with exported symbols, and link these
-# to the kernel and/or modules at the end.
-
-genksyms_format_rel_crc := [^_]*__crc_\([^ ]*\) = \.; LONG(\([^)]*\)).*
-genksyms_format_normal := __crc_\(.*\) = \(.*\);
-genksyms_format := $(if $(CONFIG_MODULE_REL_CRCS),$(genksyms_format_rel_crc),$(genksyms_format_normal))
+genksyms_format := __crc_\(.*\) = \(.*\);
 
 gen_symversions =                                                              \
        if $(NM) $@ 2>/dev/null | grep -q __ksymtab; then                       \
@@ -188,12 +179,6 @@ gen_symversions =                                                          \
 
 cmd_gen_symversions_c =        $(call gen_symversions,c)
 
-cmd_modversions =                                                              \
-       if [ -r $@.symversions ]; then                                          \
-               $(LD) $(KBUILD_LDFLAGS) -r -o $(@D)/.tmp_$(@F) $@               \
-                       -T $@.symversions;                                      \
-               mv -f $(@D)/.tmp_$(@F) $@;                                      \
-       fi
 endif
 
 ifdef CONFIG_FTRACE_MCOUNT_USE_RECORDMCOUNT
@@ -273,7 +258,6 @@ define rule_cc_o_c
        $(call cmd,checkdoc)
        $(call cmd,gen_objtooldep)
        $(call cmd,gen_symversions_c)
-       $(if $(CONFIG_LTO_CLANG),,$(call cmd,modversions))
        $(call cmd,record_mcount)
 endef
 
@@ -282,7 +266,6 @@ define rule_as_o_S
        $(call cmd,gen_ksymdeps)
        $(call cmd,gen_objtooldep)
        $(call cmd,gen_symversions_S)
-       $(call cmd,modversions)
 endef
 
 # Built-in and composite module parts
@@ -296,8 +279,6 @@ ifneq ($(CONFIG_LTO_CLANG)$(CONFIG_X86_KERNEL_IBT),)
 quiet_cmd_cc_prelink_modules = LD [M]  $@
       cmd_cc_prelink_modules =                                         \
        $(LD) $(ld_flags) -r -o $@                                      \
-               $(shell [ -s $(@:.prelink.o=.o.symversions) ] &&                \
-                       echo -T $(@:.prelink.o=.o.symversions))         \
                --whole-archive $(filter-out FORCE,$^)                  \
                $(cmd_objtool)