lkml.org 
[lkml]   [2020]   [May]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[RFC][PATCH 2/3] objtool: Find relocation base section using sh_info
Date
Currently objtool uses a naming heuristic to find the "base"
section to apply the relocation(s) to. The standard defines
the SHF_INFO_LINK flag (SHF => in the section header flags)
which indicates when the section header's sh_info field can
be used to find the necessary section.

Warns when the heuristic is used as a fallback and changes
the name heuristic calculation to handle rela (explicit
addend) and now rel (implicit addend) relocations.

Signed-off-by: Matt Helsley <mhelsley@vmware.com>
---
tools/objtool/elf.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c
index 6fb9f83f7f66..a162bc383945 100644
--- a/tools/objtool/elf.c
+++ b/tools/objtool/elf.c
@@ -502,7 +502,13 @@ static int read_relocs(struct elf *elf)
if (sec->sh.sh_type != SHT_RELA)
continue;

- sec->base = find_section_by_name(elf, sec->name + 5);
+ if (sec->sh.sh_flags & SHF_INFO_LINK) {
+ sec->base = find_section_by_index(elf, sec->sh.sh_info);
+ } else if (strncmp(sec->name, ".rel", 4) == 0) {
+ WARN("Using naming heuristic to find base of reloc section %s",
+ sec->name);
+ sec->base = find_section_by_name(elf, sec->name + 5);
+ }
if (!sec->base) {
WARN("can't find base section for reloc section %s",
sec->name);
--
2.20.1
\
 
 \ /
  Last update: 2020-05-27 18:44    [W:0.091 / U:0.380 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site