[DWARF] Unclamp line table version on Darwin for v5 and later.

On Darwin we pin the DWARF line tables to version 2. Stop doing so for
DWARF v5 and later.

Differential revision: https://reviews.llvm.org/D49381

llvm-svn: 339288
This commit is contained in:
Jonas Devlieghere 2018-08-08 21:16:50 +00:00
parent 9ff024a54f
commit 49ff4d9041
5 changed files with 12 additions and 13 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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"