[PATCH] D45473: CodeGen: Don't try to canonicalize Unix-style paths in CodeView debug info.
Peter Collingbourne via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 11 11:27:24 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL329838: CodeGen: Don't try to canonicalize Unix-style paths in CodeView debug info. (authored by pcc, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D45473?vs=141784&id=142055#toc
Repository:
rL LLVM
https://reviews.llvm.org/D45473
Files:
llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
llvm/trunk/test/DebugInfo/COFF/enum.ll
llvm/trunk/test/DebugInfo/COFF/types-array-advanced.ll
llvm/trunk/test/DebugInfo/COFF/types-non-virtual-methods.ll
Index: llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
+++ llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
@@ -114,6 +114,16 @@
StringRef Dir = File->getDirectory(), Filename = File->getFilename();
+ // If this is a Unix-style path, just use it as is. Don't try to canonicalize
+ // it textually because one of the path components could be a symlink.
+ if (!Dir.empty() && Dir[0] == '/') {
+ Filepath = Dir;
+ if (Dir.back() != '/')
+ Filepath += '/';
+ Filepath += Filename;
+ return Filepath;
+ }
+
// Clang emits directory and relative filename info into the IR, but CodeView
// operates on full paths. We could change Clang to emit full paths too, but
// that would increase the IR size and probably not needed for other users.
Index: llvm/trunk/test/DebugInfo/COFF/enum.ll
===================================================================
--- llvm/trunk/test/DebugInfo/COFF/enum.ll
+++ llvm/trunk/test/DebugInfo/COFF/enum.ll
@@ -26,12 +26,12 @@
; CHECK-NEXT: StringId (0x1002) {
; CHECK-NEXT: TypeLeafKind: LF_STRING_ID (0x1605)
; CHECK-NEXT: Id: 0x0
-; CHECK-NEXT: StringData: \<stdin>
+; CHECK-NEXT: StringData: /foo/bar.cpp
; CHECK-NEXT: }
; CHECK-NEXT: UdtSourceLine (0x1003) {
; CHECK-NEXT: TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
; CHECK-NEXT: UDT: E (0x1001)
-; CHECK-NEXT: SourceFile: \<stdin> (0x1002)
+; CHECK-NEXT: SourceFile: /foo/bar.cpp (0x1002)
; CHECK-NEXT: LineNumber: 1
; CHECK_NEXT }
@@ -51,7 +51,7 @@
!3 = !DIFile(filename: "-", directory: "/")
!4 = !{!5}
!5 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "E", file: !6, line: 1, baseType: !7, size: 32, align: 32, elements: !8)
-!6 = !DIFile(filename: "<stdin>", directory: "/")
+!6 = !DIFile(filename: "bar.cpp", directory: "/foo")
!7 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
!8 = !{!9}
!9 = !DIEnumerator(name: "BLAH", value: 0)
Index: llvm/trunk/test/DebugInfo/COFF/types-array-advanced.ll
===================================================================
--- llvm/trunk/test/DebugInfo/COFF/types-array-advanced.ll
+++ llvm/trunk/test/DebugInfo/COFF/types-array-advanced.ll
@@ -142,12 +142,12 @@
; CHECK: StringId (0x100D) {
; CHECK: TypeLeafKind: LF_STRING_ID (0x1605)
; CHECK: Id: 0x0
-; CHECK: StringData: \t.cpp
+; CHECK: StringData: /t.cpp
; CHECK: }
; CHECK: UdtSourceLine (0x100E) {
; CHECK: TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
; CHECK: UDT: incomplete_struct (0x100C)
-; CHECK: SourceFile: \t.cpp (0x100D)
+; CHECK: SourceFile: /t.cpp (0x100D)
; CHECK: LineNumber: 4
; CHECK: }
; CHECK: Modifier (0x100F) {
Index: llvm/trunk/test/DebugInfo/COFF/types-non-virtual-methods.ll
===================================================================
--- llvm/trunk/test/DebugInfo/COFF/types-non-virtual-methods.ll
+++ llvm/trunk/test/DebugInfo/COFF/types-non-virtual-methods.ll
@@ -121,12 +121,12 @@
; CHECK: StringId (0x1008) {
; CHECK: TypeLeafKind: LF_STRING_ID (0x1605)
; CHECK: Id: 0x0
-; CHECK: StringData: \t.cpp
+; CHECK: StringData: /t.cpp
; CHECK: }
; CHECK: UdtSourceLine (0x1009) {
; CHECK: TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
; CHECK: UDT: A (0x1007)
-; CHECK: SourceFile: \t.cpp (0x1008)
+; CHECK: SourceFile: /t.cpp (0x1008)
; CHECK: LineNumber: 1
; CHECK: }
; CHECK: Class (0x100A) {
@@ -241,7 +241,7 @@
; CHECK: UdtSourceLine (0x1014) {
; CHECK: TypeLeafKind: LF_UDT_SRC_LINE (0x1606)
; CHECK: UDT: B (0x1013)
-; CHECK: SourceFile: \t.cpp (0x1008)
+; CHECK: SourceFile: /t.cpp (0x1008)
; CHECK: LineNumber: 11
; CHECK: }
; CHECK: ]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D45473.142055.patch
Type: text/x-patch
Size: 3838 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180411/e27736c6/attachment.bin>
More information about the llvm-commits
mailing list