4074532758
Modify modpost to use binary search for converting addresses back into symbol references. Previously it used linear search. This change saves a few seconds of wall time for defconfig builds, but can save several minutes on allyesconfigs. Before: $ make LLVM=1 -j128 allyesconfig vmlinux -s KCFLAGS="-Wno-error" $ time scripts/mod/modpost -M -m -a -N -o vmlinux.symvers vmlinux.o 198.38user 1.27system 3:19.71elapsed After: $ make LLVM=1 -j128 allyesconfig vmlinux -s KCFLAGS="-Wno-error" $ time scripts/mod/modpost -M -m -a -N -o vmlinux.symvers vmlinux.o 11.91user 0.85system 0:12.78elapsed Signed-off-by: Jack Brennen <jbrennen@google.com> Tested-by: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
29 lines
892 B
Makefile
29 lines
892 B
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
OBJECT_FILES_NON_STANDARD := y
|
|
CFLAGS_REMOVE_empty.o += $(CC_FLAGS_LTO)
|
|
|
|
hostprogs-always-y += modpost mk_elfconfig
|
|
always-y += empty.o
|
|
|
|
modpost-objs := modpost.o file2alias.o sumversion.o symsearch.o
|
|
|
|
devicetable-offsets-file := devicetable-offsets.h
|
|
|
|
$(obj)/$(devicetable-offsets-file): $(obj)/devicetable-offsets.s FORCE
|
|
$(call filechk,offsets,__DEVICETABLE_OFFSETS_H__)
|
|
|
|
targets += $(devicetable-offsets-file) devicetable-offsets.s
|
|
|
|
# dependencies on generated files need to be listed explicitly
|
|
|
|
$(obj)/modpost.o $(obj)/file2alias.o $(obj)/sumversion.o $(obj)/symsearch.o: $(obj)/elfconfig.h
|
|
$(obj)/file2alias.o: $(obj)/$(devicetable-offsets-file)
|
|
|
|
quiet_cmd_elfconfig = MKELF $@
|
|
cmd_elfconfig = $(obj)/mk_elfconfig < $< > $@
|
|
|
|
$(obj)/elfconfig.h: $(obj)/empty.o $(obj)/mk_elfconfig FORCE
|
|
$(call if_changed,elfconfig)
|
|
|
|
targets += elfconfig.h
|