From 530389968739883a61192767e1c215653ba4ba2b Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Tue, 10 Mar 2020 18:43:35 +0100 Subject: objtool: Optimize find_section_by_index() In order to avoid a linear search (over 20k entries), add an section_hash to the elf object. This reduces objtool on vmlinux.o from a few minutes to around 45 seconds. Signed-off-by: Peter Zijlstra (Intel) Reviewed-by: Miroslav Benes Acked-by: Josh Poimboeuf Link: https://lkml.kernel.org/r/20200324160924.381249993@infradead.org --- tools/objtool/elf.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tools/objtool/elf.h') diff --git a/tools/objtool/elf.h b/tools/objtool/elf.h index 12229801b13f..8c272eb515c8 100644 --- a/tools/objtool/elf.h +++ b/tools/objtool/elf.h @@ -25,6 +25,7 @@ struct section { struct list_head list; + struct hlist_node hash; GElf_Shdr sh; struct list_head symbol_list; struct list_head rela_list; @@ -71,6 +72,7 @@ struct elf { char *name; struct list_head sections; DECLARE_HASHTABLE(symbol_hash, 20); + DECLARE_HASHTABLE(section_hash, 16); }; -- cgit v1.2.3-70-g09d2