]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
libdwfl: Allow partial relocations also for debug files.
authorMark Wielaard <mark@klomp.org>
Sun, 27 May 2018 12:05:21 +0000 (14:05 +0200)
committerMark Wielaard <mark@klomp.org>
Tue, 29 May 2018 10:10:41 +0000 (12:10 +0200)
__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>
libdwfl/ChangeLog
libdwfl/relocate.c

index d69fe0cd145a3340753d2d2b858b24a3cd43a104..34aa07d1f2509683a54d4fa4673410cff3b42cc8 100644 (file)
@@ -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.
index 17682433563bafea9d6ab1b57a33e5d0f30662a3..9afcdebecc05b157baabd8f3ce0c2067b43a4637 100644 (file)
@@ -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. */);
        }
     }