summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/MC/MCObjectStreamer.cpp2
-rw-r--r--llvm/test/MC/ELF/debug-line.s14
2 files changed, 12 insertions, 4 deletions
diff --git a/llvm/lib/MC/MCObjectStreamer.cpp b/llvm/lib/MC/MCObjectStreamer.cpp
index d21ce8d1a11..2d7657c5919 100644
--- a/llvm/lib/MC/MCObjectStreamer.cpp
+++ b/llvm/lib/MC/MCObjectStreamer.cpp
@@ -103,6 +103,8 @@ void MCObjectStreamer::EmitValueImpl(const MCExpr *Value, unsigned Size,
assert(AddrSpace == 0 && "Address space must be 0!");
MCDataFragment *DF = getOrCreateDataFragment();
+ MCLineEntry::Make(this, getCurrentSection().first);
+
// Avoid fixups when possible.
int64_t AbsValue;
if (AddValueSymbols(Value)->EvaluateAsAbsolute(AbsValue, getAssembler())) {
diff --git a/llvm/test/MC/ELF/debug-line.s b/llvm/test/MC/ELF/debug-line.s
index 75e050e9da1..6766f1042ba 100644
--- a/llvm/test/MC/ELF/debug-line.s
+++ b/llvm/test/MC/ELF/debug-line.s
@@ -8,17 +8,18 @@
// CHECK-NEXT: Flags [
// CHECK-NEXT: ]
// CHECK-NEXT: Address: 0x0
-// CHECK-NEXT: Offset: 0x44
-// CHECK-NEXT: Size: 55
+// CHECK-NEXT: Offset: 0x48
+// CHECK-NEXT: Size: 72
// CHECK-NEXT: Link: 0
// CHECK-NEXT: Info: 0
// CHECK-NEXT: AddressAlignment: 1
// CHECK-NEXT: EntrySize: 0
// CHECK-NEXT: SectionData (
-// CHECK-NEXT: 0000: 33000000 02001C00 00000101 FB0E0D00
+// CHECK-NEXT: 0000: 44000000 02001C00 00000101 FB0E0D00
// CHECK-NEXT: 0010: 01010101 00000001 00000100 666F6F2E
// CHECK-NEXT: 0020: 63000000 00000009 02000000 00000000
-// CHECK-NEXT: 0030: 00150204 000101
+// CHECK-NEXT: 0030: 00150205 00010100 09020000 00000000
+// CHECK-NEXT: 0040: 00001602 43000101
// CHECK-NEXT: )
// CHECK-NEXT: }
@@ -28,3 +29,8 @@
.file 1 "foo.c"
.loc 1 4 0
subq $8, %rsp
+
+// Test that .loc works with values, not just instructions.
+
+ .loc 1 5 0
+ .byte 0xc3
OpenPOWER on IntegriCloud