[LLVMbugs] [Bug 9493] New: Dwarf relocation missing in ARM assembly output

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Mar 16 04:16:19 PDT 2011


           Summary: Dwarf relocation missing in ARM assembly output
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: ARM
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: rengolin at gmail.com
                CC: llvmbugs at cs.uiuc.edu

In DWARF output by LLVM, references from DW_AT_location to location list
entries in .debug_loc are
missing any relocation - they are just numeric offsets from the start of the
.debug_loc section.

This means they don't get correctly updated when the linker combines the
.debug_loc section.

In DWARF we would expect any DW_AT_location that is a loclistptr rather than
inline expression
block to have a relocation against the corresponding entry in the .debug_loc

The following example exposes the bug:

extern int g(int, int);
extern int a;

void f(void) {
  int x;
  int i = 10;
  a = g(0, 0);
  x = 1;
  while (x & 1 && --i) { x *= a; }
  a = g(x, 0);
  x = 2;
  i = 10;
  while (x & 2 && --i) { x *= a; }
  a = g(0, x);

Where the variable 'x' has two locations, R0 and R1, throughout the program.

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list