From: Peter Collingbourne Date: Sun, 20 Oct 2013 02:16:18 +0000 (+0000) Subject: Emit DWARF line entries for all data in the instruction stream. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=e52fac1632dc43d0595e06baf5743608b173dfbc;hp=53c9e5fbb9492824adfa1b004c198236fba1a93b;ds=sidebyside Emit DWARF line entries for all data in the instruction stream. r182712 attempted to do this, but it failed to handle data emitted via EmitBytes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193041 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/MC/MCObjectStreamer.cpp b/lib/MC/MCObjectStreamer.cpp index 7fa6695253e..bc14c2ae2bc 100644 --- a/lib/MC/MCObjectStreamer.cpp +++ b/lib/MC/MCObjectStreamer.cpp @@ -305,6 +305,7 @@ void MCObjectStreamer::EmitDwarfAdvanceFrameAddr(const MCSymbol *LastLabel, } void MCObjectStreamer::EmitBytes(StringRef Data) { + MCLineEntry::Make(this, getCurrentSection().first); getOrCreateDataFragment()->getContents().append(Data.begin(), Data.end()); } diff --git a/test/MC/ELF/debug-line.s b/test/MC/ELF/debug-line.s index 6766f1042ba..38ef8284a0d 100644 --- a/test/MC/ELF/debug-line.s +++ b/test/MC/ELF/debug-line.s @@ -1,6 +1,15 @@ // RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s -// Test that .debug_line is populated. +// Test that .debug_line is populated. TODO: This test should really be using +// llvm-dwarfdump, but it cannot parse this particular object file. The content +// of .debug_line was checked using GNU binutils: + +// $ objdump --dwarf=decodedline debug-line.o +// [...] +// File name Line number Starting address +// foo.c 4 0 +// foo.c 5 0x4 +// foo.c 6 0x5 // CHECK: Section { // CHECK: Name: .debug_line @@ -8,18 +17,18 @@ // CHECK-NEXT: Flags [ // CHECK-NEXT: ] // CHECK-NEXT: Address: 0x0 -// CHECK-NEXT: Offset: 0x48 -// CHECK-NEXT: Size: 72 +// CHECK-NEXT: Offset: 0x50 +// CHECK-NEXT: Size: 57 // CHECK-NEXT: Link: 0 // CHECK-NEXT: Info: 0 // CHECK-NEXT: AddressAlignment: 1 // CHECK-NEXT: EntrySize: 0 // CHECK-NEXT: SectionData ( -// CHECK-NEXT: 0000: 44000000 02001C00 00000101 FB0E0D00 + +// CHECK-NEXT: 0000: 35000000 02001C00 00000101 FB0E0D00 // CHECK-NEXT: 0010: 01010101 00000001 00000100 666F6F2E // CHECK-NEXT: 0020: 63000000 00000009 02000000 00000000 -// CHECK-NEXT: 0030: 00150205 00010100 09020000 00000000 -// CHECK-NEXT: 0040: 00001602 43000101 +// CHECK-NEXT: 0030: 00154B21 02080001 01 // CHECK-NEXT: ) // CHECK-NEXT: } @@ -34,3 +43,7 @@ .loc 1 5 0 .byte 0xc3 + + .loc 1 6 0 +l: + .quad l