summaryrefslogtreecommitdiffstats
path: root/libdwfl
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2018-05-27 14:05:21 +0200
committerMark Wielaard <mark@klomp.org>2018-05-29 12:10:41 +0200
commit263dbe8ca17f66baa184f489530eb92afa15adfe (patch)
tree884183a7ca5c66199170b7d784e60b7c7dced8a9 /libdwfl
parent7372ccf49a83d4eb38b39fe227345d53c8219254 (diff)
libdwfl: Allow partial relocations also for debug files.
__libdwfl_relocate is called for get_dwarf and get_elf. We allow not all relocations to be resolved for Elf files, but required all relocations (in the debug sections) to be fully resoled in Dwarf files. This used to mostly work out with .o ET_REL files when the main Elf was gotten before the Dwarf. But with .dwo files, we (readelf) might open the .o file just for the (skeleton) Dwarf. In this case it could happen not all relocations in the debug sections could be resolved (.debug_info and .debug_addr might contain referenes to undefined symbols). So allow partial relocations also for debug files. Signed-off-by: Mark Wielaard <mark@klomp.org>
Diffstat (limited to 'libdwfl')
-rw-r--r--libdwfl/ChangeLog5
-rw-r--r--libdwfl/relocate.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index d69fe0cd..34aa07d1 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,8 @@
+2018-05-27 Mark Wielaard <mark@klomp.org>
+
+ * relocate.c (__libdwfl_relocate): Always call relocate_section with
+ partial true.
+
2018-05-17 Mark Wielaard <mark@klomp.org>
* dwfl_module (__libdwfl_module_free): Free elfdir.
diff --git a/libdwfl/relocate.c b/libdwfl/relocate.c
index 17682433..9afcdebe 100644
--- a/libdwfl/relocate.c
+++ b/libdwfl/relocate.c
@@ -751,7 +751,7 @@ __libdwfl_relocate (Dwfl_Module *mod, Elf *debugfile, bool debug)
else
result = relocate_section (mod, debugfile, ehdr, d_shstrndx,
&reloc_symtab, scn, shdr, tscn,
- debug, !debug);
+ debug, true /* partial always OK. */);
}
}