From 5f61134595c569b3b39d84e24a5d53ccd0d985c4 Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sat, 6 Sep 2014 19:57:48 +0000 Subject: [PATCH] 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217317 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/MCDwarf.cpp | 3 ++- test/DebugInfo/X86/dbg-asm.s | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/MC/MCDwarf.cpp b/lib/MC/MCDwarf.cpp index 5bc0e43f59d..95cfe24eaae 100644 --- a/lib/MC/MCDwarf.cpp +++ b/lib/MC/MCDwarf.cpp @@ -613,7 +613,8 @@ static void EmitGenDwarfAranges(MCStreamer *MCOS, // 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. diff --git a/test/DebugInfo/X86/dbg-asm.s b/test/DebugInfo/X86/dbg-asm.s index de4e8e4a97b..f6e5233ba45 100644 --- a/test/DebugInfo/X86/dbg-asm.s +++ b/test/DebugInfo/X86/dbg-asm.s @@ -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: ] -- 2.11.0