diff options
author | Jonas Devlieghere <jonas@devlieghere.com> | 2018-08-08 21:16:50 +0000 |
---|---|---|
committer | Jonas Devlieghere <jonas@devlieghere.com> | 2018-08-08 21:16:50 +0000 |
commit | 49ff4d904148125cad66a8df33b7033390068310 (patch) | |
tree | a766fac650929494f517dfbf9232ac9f044073b9 | |
parent | 9ff024a54fefa08cb93065e25ecbb974b74bc6e4 (diff) | |
download | bcm5719-llvm-49ff4d904148125cad66a8df33b7033390068310.tar.gz bcm5719-llvm-49ff4d904148125cad66a8df33b7033390068310.zip |
[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
-rw-r--r-- | llvm/lib/MC/MCDwarf.cpp | 9 | ||||
-rw-r--r-- | llvm/test/CodeGen/Generic/dwarf-md5.ll | 6 | ||||
-rw-r--r-- | llvm/test/CodeGen/Generic/dwarf-source.ll | 6 | ||||
-rw-r--r-- | llvm/test/MC/ELF/dwarf-file0.s | 2 | ||||
-rw-r--r-- | llvm/test/MC/ELF/dwarf-loc0.s | 2 |
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" |