modpost: Optimize symbol search from linear to binary search
authorJack Brennen <jbrennen@google.com>
Tue, 26 Sep 2023 12:40:44 +0000 (08:40 -0400)
committerMasahiro Yamada <masahiroy@kernel.org>
Tue, 3 Oct 2023 11:25:59 +0000 (20:25 +0900)
commit4074532758c5c367d3fcb8d124150824a254659d
tree6855ea558308e1f2c4a92e990344ef11297cca48
parent8a749fd1a8720d4619c91c8b6e7528c0a355c0aa
modpost: Optimize symbol search from linear to binary search

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>
scripts/mod/Makefile
scripts/mod/modpost.c
scripts/mod/modpost.h
scripts/mod/symsearch.c [new file with mode: 0644]