[llvm] r289961 - Revert "dwarfdump: Support/process relocations on a CU's abbrev_off"

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 20 10:02:51 PST 2016


Hi George,

Committing this change broke your gdb-index test in lld.

It looks like the info section had a non-zero offset in the relocation
pointing to the abbrev section, but the abbrev section in the object has
the data at start (& dumping the raw object file from disk shows the
relocation has a zero offset)

Is this data somehow modified by lld rather than being the raw bytes from
the input file? How/why/where?

Any idea how to fix this change/lld so it doesn't have this problem?

As it is, dwarfdump is crashing on inputs I care about & this change seems
like a reasonable fix for it, so I'm guessing we probably want to fix lld
in some way?

- Dave

On Fri, Dec 16, 2016 at 9:20 AM David Blaikie via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: dblaikie
> Date: Fri Dec 16 11:10:17 2016
> New Revision: 289961
>
> URL: http://llvm.org/viewvc/llvm-project?rev=289961&view=rev
> Log:
> Revert "dwarfdump: Support/process relocations on a CU's abbrev_off"
>
> Reverting because this breaks lld's gdb_index support - it's probably
> double counting the abbrev relocation offset.
>
> This reverts commit r289954.
>
> Removed:
>     llvm/trunk/test/DebugInfo/Inputs/dwarfdump-abbrev-off.elf-x86-64
>     llvm/trunk/test/DebugInfo/dwarfdump-abbrev-off.test
> Modified:
>     llvm/trunk/lib/DebugInfo/DWARF/DWARFUnit.cpp
>
> Modified: llvm/trunk/lib/DebugInfo/DWARF/DWARFUnit.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/DWARF/DWARFUnit.cpp?rev=289961&r1=289960&r2=289961&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/DebugInfo/DWARF/DWARFUnit.cpp (original)
> +++ llvm/trunk/lib/DebugInfo/DWARF/DWARFUnit.cpp Fri Dec 16 11:10:17 2016
> @@ -87,10 +87,7 @@ bool DWARFUnit::getStringOffsetSectionIt
>  bool DWARFUnit::extractImpl(DataExtractor debug_info, uint32_t
> *offset_ptr) {
>    Length = debug_info.getU32(offset_ptr);
>    Version = debug_info.getU16(offset_ptr);
> -  auto AI = InfoSection.Relocs.find(*offset_ptr);
>    uint64_t AbbrOffset = debug_info.getU32(offset_ptr);
> -  if (AI != InfoSection.Relocs.end())
> -    AbbrOffset += AI->second.second;
>    if (IndexEntry) {
>      if (AbbrOffset)
>        return false;
>
> Removed: llvm/trunk/test/DebugInfo/Inputs/dwarfdump-abbrev-off.elf-x86-64
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Inputs/dwarfdump-abbrev-off.elf-x86-64?rev=289960&view=auto
>
> ==============================================================================
> Binary files
> llvm/trunk/test/DebugInfo/Inputs/dwarfdump-abbrev-off.elf-x86-64 (original)
> and llvm/trunk/test/DebugInfo/Inputs/dwarfdump-abbrev-off.elf-x86-64
> (removed) differ
>
> Removed: llvm/trunk/test/DebugInfo/dwarfdump-abbrev-off.test
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/dwarfdump-abbrev-off.test?rev=289960&view=auto
>
> ==============================================================================
> --- llvm/trunk/test/DebugInfo/dwarfdump-abbrev-off.test (original)
> +++ llvm/trunk/test/DebugInfo/dwarfdump-abbrev-off.test (removed)
> @@ -1,8 +0,0 @@
> -RUN: llvm-dwarfdump -debug-dump=info
> %p/Inputs/dwarfdump-abbrev-off.elf-x86-64 | FileCheck %s
> -
> -Check that we apply relocations to the abbr_offset - while LLVM never
> produces
> -an object file like this, a reproduction can be produced by linking two
> simple
> -object files together with ld -r.
> -
> -CHECK: abbr_offset = 0x0000
> -CHECK: abbr_offset = 0x0010
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161220/86eb9023/attachment-0001.html>


More information about the llvm-commits mailing list