summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/MC/MCDwarf.cpp9
-rw-r--r--llvm/test/CodeGen/Generic/dwarf-md5.ll6
-rw-r--r--llvm/test/CodeGen/Generic/dwarf-source.ll6
-rw-r--r--llvm/test/MC/ELF/dwarf-file0.s2
-rw-r--r--llvm/test/MC/ELF/dwarf-loc0.s2
5 files changed, 12 insertions, 13 deletions
diff --git a/llvm/lib/MC/MCDwarf.cpp b/llvm/lib/MC/MCDwarf.cpp
index 0461c2564cc..9574379d78d 100644
--- a/llvm/lib/MC/MCDwarf.cpp
+++ b/llvm/lib/MC/MCDwarf.cpp
@@ -462,11 +462,14 @@ MCDwarfLineTableHeader::Emit(MCStreamer *MCOS, MCDwarfLineTableParams Params,
emitAbsValue(*MCOS,
MakeStartMinusEndExpr(*MCOS, *LineStartSym, *LineEndSym, 4), 4);
- // Next 2 bytes is the Version.
- // FIXME: On Darwin we still default to V2.
unsigned LineTableVersion = context.getDwarfVersion();
- if (context.getObjectFileInfo()->getTargetTriple().isOSDarwin())
+
+ // On Darwin we default to v2 for anything before DWARF v5.
+ if (context.getObjectFileInfo()->getTargetTriple().isOSDarwin() &&
+ LineTableVersion < 5)
LineTableVersion = 2;
+
+ // Next 2 bytes is the Version.
MCOS->EmitIntValue(LineTableVersion, 2);
// Keep track of the bytes between the very start and where the header length
diff --git a/llvm/test/CodeGen/Generic/dwarf-md5.ll b/llvm/test/CodeGen/Generic/dwarf-md5.ll
index fc708f78d67..c55d7d7725a 100644
--- a/llvm/test/CodeGen/Generic/dwarf-md5.ll
+++ b/llvm/test/CodeGen/Generic/dwarf-md5.ll
@@ -1,8 +1,8 @@
; MD5 checksums provided by IR should be passed through to asm.
; They'll be emitted to an object file only for DWARF 5 or later.
-
-; Darwin clamps the line table at DWARF v2 so XFAIL this test.
-; XFAIL: darwin
+;
+; Note that on Darwin for DWARF 4 or earlier, the line table version is clamped
+; to version 2. However that doesn't affect the output checked in this test.
; REQUIRES: object-emission
; RUN: %llc_dwarf -dwarf-version 4 -filetype=asm -o - %s | FileCheck %s --check-prefix=ASM-4
diff --git a/llvm/test/CodeGen/Generic/dwarf-source.ll b/llvm/test/CodeGen/Generic/dwarf-source.ll
index 0636f926150..7b7d9c59b76 100644
--- a/llvm/test/CodeGen/Generic/dwarf-source.ll
+++ b/llvm/test/CodeGen/Generic/dwarf-source.ll
@@ -1,8 +1,8 @@
; Source text provided by IR should be passed through to asm.
; It is emitted to an object file only for DWARF 5 or later.
-
-; Darwin clamps the line table at DWARF v2 so XFAIL this test.
-; XFAIL: darwin
+;
+; Note that on Darwin for DWARF 4 or earlier, the line table version is clamped
+; to version 2. However that doesn't affect the output checked in this test.
; REQUIRES: object-emission
; RUN: %llc_dwarf -dwarf-version 4 -filetype=asm -o - %s | FileCheck %s --check-prefix=ASM-4
diff --git a/llvm/test/MC/ELF/dwarf-file0.s b/llvm/test/MC/ELF/dwarf-file0.s
index ef16ee3b0a1..1a3afb6875f 100644
--- a/llvm/test/MC/ELF/dwarf-file0.s
+++ b/llvm/test/MC/ELF/dwarf-file0.s
@@ -4,8 +4,6 @@
# RUN: llvm-mc -dwarf-version 4 %s -filetype=asm -o - 2>&1 | FileCheck %s --check-prefix=WARN
# RUN: llvm-mc -dwarf-version 5 %s -filetype=obj -o - | llvm-dwarfdump -debug-line - | FileCheck %s --check-prefixes=CHECK,CHECK-5
# RUN: llvm-mc -dwarf-version 5 %s -filetype=asm -o - | FileCheck %s --check-prefixes=ASM,ASM-5
-# Darwin is stuck on DWARF v2.
-# XFAIL: darwin
.file 0 "/test" "root.cpp"
.file 1 "/include" "header.h"
.file 2 "/test" "root.cpp"
diff --git a/llvm/test/MC/ELF/dwarf-loc0.s b/llvm/test/MC/ELF/dwarf-loc0.s
index 8fed6bba34c..b3b11c457b0 100644
--- a/llvm/test/MC/ELF/dwarf-loc0.s
+++ b/llvm/test/MC/ELF/dwarf-loc0.s
@@ -1,8 +1,6 @@
# REQUIRES: default_triple
# RUN: llvm-mc -dwarf-version 5 %s -filetype=obj -o - | llvm-dwarfdump -debug-line - | FileCheck %s
# RUN: not llvm-mc -dwarf-version 4 %s -filetype=asm -o - 2>&1 | FileCheck %s -check-prefix=ERR
-# Darwin line table is stuck on DWARF v2.
-# XFAIL: darwin
# Show that ".loc 0" works in DWARF v5, gets an error for earlier versions.
.file 0 "root.cpp"
.file 1 "header.h"
OpenPOWER on IntegriCloud