[llvm] r217317 - MC: correct DWARF line info for PE/COFF

Saleem Abdulrasool compnerd at compnerd.org
Sat Sep 6 12:57:48 PDT 2014


Author: compnerd
Date: Sat Sep  6 14:57:48 2014
New Revision: 217317

URL: http://llvm.org/viewvc/llvm-project?rev=217317&view=rev
Log:
MC: correct DWARF line info for PE/COFF

DWARF address ranges contain a reference to the debug_info section.  This offset
is an absolute relocation except on non-PE/COFF targets where it is section
relative.  We would emit this incorrectly, and trying to map the debug info from
the address would fail.

Modified:
    llvm/trunk/lib/MC/MCDwarf.cpp
    llvm/trunk/test/DebugInfo/X86/dbg-asm.s

Modified: llvm/trunk/lib/MC/MCDwarf.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCDwarf.cpp?rev=217317&r1=217316&r2=217317&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCDwarf.cpp (original)
+++ llvm/trunk/lib/MC/MCDwarf.cpp Sat Sep  6 14:57:48 2014
@@ -613,7 +613,8 @@ static void EmitGenDwarfAranges(MCStream
   // The 4 byte offset to the compile unit in the .debug_info from the start
   // of the .debug_info.
   if (InfoSectionSymbol)
-    MCOS->EmitSymbolValue(InfoSectionSymbol, 4);
+    MCOS->EmitSymbolValue(InfoSectionSymbol, 4,
+                          asmInfo->needsDwarfSectionOffsetDirective());
   else
     MCOS->EmitIntValue(0, 4);
   // The 1 byte size of an address.

Modified: llvm/trunk/test/DebugInfo/X86/dbg-asm.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/dbg-asm.s?rev=217317&r1=217316&r2=217317&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/X86/dbg-asm.s (original)
+++ llvm/trunk/test/DebugInfo/X86/dbg-asm.s Sat Sep  6 14:57:48 2014
@@ -14,6 +14,9 @@ _a:
 # CHECK-COFF:     0x6 IMAGE_REL_I386_SECREL .debug_abbrev
 # CHECK-COFF:     0xC IMAGE_REL_I386_SECREL .debug_line
 # CHECK-COFF:   }
+# CHECK-COFF:   Section {{.*}} .debug_aranges {
+# CHECK-COFF:     0x6 IMAGE_REL_I386_SECREL .debug_info
+# CHECK-COFF:   }
 # CHECK-COFF: ]
 
 # CHECK-ELF: Relocations [
@@ -21,4 +24,7 @@ _a:
 # CHECK-ELF:     0x6 R_386_32 .debug_abbrev
 # CHECK-ELF:     0xC R_386_32 .debug_line
 # CHECK-ELF:   }
+# CHECK-ELF:   Section {{.*}} .rel.debug_aranges {
+# CHECK-ELF:     0x6 R_386_32 .debug_info
+# CHECK-ELF:   }
 # CHECK-ELF: ]





More information about the llvm-commits mailing list