mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 22:26:55 +00:00
objtool: Shrink struct instruction
Any one instruction can only ever call a single function, therefore insn->mcount_loc_node is superfluous and can use insn->call_node. This shrinks struct instruction, which is by far the most numerous structure objtool creates. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Reviewed-by: Borislav Petkov <bp@suse.de> Acked-by: Josh Poimboeuf <jpoimboe@redhat.com> Tested-by: Alexei Starovoitov <ast@kernel.org> Link: https://lore.kernel.org/r/20211026120309.785456706@infradead.org
This commit is contained in:
parent
dd003edeff
commit
c509331b41
2 changed files with 3 additions and 4 deletions
|
@ -701,7 +701,7 @@ static int create_mcount_loc_sections(struct objtool_file *file)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
idx = 0;
|
idx = 0;
|
||||||
list_for_each_entry(insn, &file->mcount_loc_list, mcount_loc_node)
|
list_for_each_entry(insn, &file->mcount_loc_list, call_node)
|
||||||
idx++;
|
idx++;
|
||||||
|
|
||||||
sec = elf_create_section(file->elf, "__mcount_loc", 0, sizeof(unsigned long), idx);
|
sec = elf_create_section(file->elf, "__mcount_loc", 0, sizeof(unsigned long), idx);
|
||||||
|
@ -709,7 +709,7 @@ static int create_mcount_loc_sections(struct objtool_file *file)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
idx = 0;
|
idx = 0;
|
||||||
list_for_each_entry(insn, &file->mcount_loc_list, mcount_loc_node) {
|
list_for_each_entry(insn, &file->mcount_loc_list, call_node) {
|
||||||
|
|
||||||
loc = (unsigned long *)sec->data->d_buf + idx;
|
loc = (unsigned long *)sec->data->d_buf + idx;
|
||||||
memset(loc, 0, sizeof(unsigned long));
|
memset(loc, 0, sizeof(unsigned long));
|
||||||
|
@ -1051,7 +1051,7 @@ static void annotate_call_site(struct objtool_file *file,
|
||||||
|
|
||||||
insn->type = INSN_NOP;
|
insn->type = INSN_NOP;
|
||||||
|
|
||||||
list_add_tail(&insn->mcount_loc_node, &file->mcount_loc_list);
|
list_add_tail(&insn->call_node, &file->mcount_loc_list);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,6 @@ struct instruction {
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
struct hlist_node hash;
|
struct hlist_node hash;
|
||||||
struct list_head call_node;
|
struct list_head call_node;
|
||||||
struct list_head mcount_loc_node;
|
|
||||||
struct section *sec;
|
struct section *sec;
|
||||||
unsigned long offset;
|
unsigned long offset;
|
||||||
unsigned int len;
|
unsigned int len;
|
||||||
|
|
Loading…
Reference in a new issue