diff options
author | Josh Poimboeuf <jpoimboe@kernel.org> | 2023-05-30 10:21:06 -0700 |
---|---|---|
committer | Josh Poimboeuf <jpoimboe@kernel.org> | 2023-06-07 10:03:21 -0700 |
commit | e4cbb9b81f1f7519c7ae3abda09cb15794022952 (patch) | |
tree | b70dff6bc5c62979ac59ecaf4b5f87ca36ad6821 /tools/objtool/check.c | |
parent | be9a4c116824c39720001db5bc45fe7528b26cff (diff) |
objtool: Get rid of reloc->offset
Get the offset from the embedded GElf_Rel[a] struct.
With allyesconfig + CONFIG_DEBUG_INFO:
- Before: peak heap memory consumption: 43.83G
- After: peak heap memory consumption: 42.10G
Link: https://lore.kernel.org/r/2b9ec01178baa346a99522710bf2e82159412e3a.1685464332.git.jpoimboe@kernel.org
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Diffstat (limited to 'tools/objtool/check.c')
-rw-r--r-- | tools/objtool/check.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/tools/objtool/check.c b/tools/objtool/check.c index e21138d36e00..e06ffad5a93c 100644 --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -511,11 +511,11 @@ static int add_pv_ops(struct objtool_file *file, const char *symname) if (func->type == STT_SECTION) func = find_symbol_by_offset(reloc->sym->sec, reloc->addend); - idx = (reloc->offset - sym->offset) / sizeof(unsigned long); + idx = (reloc_offset(reloc) - sym->offset) / sizeof(unsigned long); objtool_pv_add(file, idx, func); - off = reloc->offset + 1; + off = reloc_offset(reloc) + 1; if (off > end) break; } @@ -1998,7 +1998,7 @@ static int add_jump_table(struct objtool_file *file, struct instruction *insn, break; /* Make sure the table entries are consecutive: */ - if (prev_offset && reloc->offset != prev_offset + 8) + if (prev_offset && reloc_offset(reloc) != prev_offset + 8) break; /* Detect function pointers from contiguous objects: */ @@ -2023,7 +2023,7 @@ static int add_jump_table(struct objtool_file *file, struct instruction *insn, alt->insn = dest_insn; alt->next = insn->alts; insn->alts = alt; - prev_offset = reloc->offset; + prev_offset = reloc_offset(reloc); } if (!prev_offset) { @@ -4266,8 +4266,8 @@ static int validate_ibt_insn(struct objtool_file *file, struct instruction *insn for (reloc = insn_reloc(file, insn); reloc; reloc = find_reloc_by_dest_range(file->elf, insn->sec, - reloc->offset + 1, - (insn->offset + insn->len) - (reloc->offset + 1))) { + reloc_offset(reloc) + 1, + (insn->offset + insn->len) - (reloc_offset(reloc) + 1))) { /* * static_call_update() references the trampoline, which @@ -4350,7 +4350,7 @@ static int validate_ibt_data_reloc(struct objtool_file *file, return 0; WARN_FUNC("data relocation to !ENDBR: %s", - reloc->sec->base, reloc->offset, + reloc->sec->base, reloc_offset(reloc), offstr(dest->sec, dest->offset)); return 1; |