[llvm-bugs] [Bug 46804] New: llvm-dwarfdump cannot handle .debug_ranges/.debug_loc empty relocated range in ET_REL object

via llvm-bugs llvm-bugs at lists.llvm.org
Wed Jul 22 00:26:07 PDT 2020


https://bugs.llvm.org/show_bug.cgi?id=46804

            Bug ID: 46804
           Summary: llvm-dwarfdump cannot handle .debug_ranges/.debug_loc
                    empty relocated range in ET_REL object
           Product: tools
           Version: trunk
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P
         Component: llvm-dwarfdump
          Assignee: unassignedbugs at nondot.org
          Reporter: jh7370.2008 at my.bristol.ac.uk
                CC: llvm-bugs at lists.llvm.org

See http://lists.llvm.org/pipermail/llvm-dev/2020-July/143575.html for full
context.

A .debug_ranges/.debug_loc sequence ends with an entry containing 0 for the two
addresses. In a fully-linked object, llvm-dwarfdump handles this fine. However,
in an ET_REL file, there might be relocations patching an apparent 0, 0 entry.
The parsing code does resolve relocations before determining if an address is
zero. However, if the relocations happen to be section-relative (or
symbol-relative, where the symbol is at a section start), the resultant address
will be the relocation addend, which could be 0 in both cases.

Simple example:

.section .foo,"a", at progbits
nop

.section .debug_ranges,"", at progbits:
.quad foo
.quad foo
.quad 0, 0 # actual terminator

This is a particular problem in .debug_loc, where the entry might have some
data afterwards, so a premature termination will cause parsing to completely
fail.

The solution is to not treat an address patched by a relocation as 0, for the
purpose of termination.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20200722/d42bee88/attachment.html>


More information about the llvm-bugs mailing list