[PATCH] D27506: [ELF] - Print absolute file name in errors when possible.
George Rimar via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 7 01:16:54 PST 2016
grimar updated this revision to Diff 80551.
grimar added a comment.
- Convert path separators to *nix style.
https://reviews.llvm.org/D27506
Files:
ELF/InputFiles.cpp
test/ELF/Inputs/undef-debug.s
test/ELF/undef.s
Index: test/ELF/undef.s
===================================================================
--- test/ELF/undef.s
+++ test/ELF/undef.s
@@ -9,9 +9,9 @@
# CHECK: error: undef.s:(.text+0x6): undefined symbol 'bar'
# CHECK: error: undef.s:(.text+0x10): undefined symbol 'foo(int)'
# CHECK: error: {{.*}}2.a({{.*}}.o):(.text+0x0): undefined symbol 'zed2'
-# CHECK: error: undef-debug.s:3: undefined symbol 'zed3'
-# CHECK: error: undef-debug.s:7: undefined symbol 'zed4'
-# CHECK: error: undef-debug.s:11: undefined symbol 'zed5'
+# CHECK: error: folder/undef-debug.s:3: undefined symbol 'zed3'
+# CHECK: error: folder/undef-debug.s:7: undefined symbol 'zed4'
+# CHECK: error: folder/undef-debug.s:11: undefined symbol 'zed5'
# RUN: not ld.lld %t.o %t2.a -o %t.exe -no-demangle 2>&1 | \
# RUN: FileCheck -check-prefix=NO-DEMANGLE %s
Index: test/ELF/Inputs/undef-debug.s
===================================================================
--- test/ELF/Inputs/undef-debug.s
+++ test/ELF/Inputs/undef-debug.s
@@ -1,4 +1,4 @@
-.file 1 "undef-debug.s"
+.file 1 "folder/undef-debug.s"
.loc 1 3
.quad zed3
Index: ELF/InputFiles.cpp
===================================================================
--- ELF/InputFiles.cpp
+++ ELF/InputFiles.cpp
@@ -86,12 +86,18 @@
// Use fake address calcuated by adding section file offset and offset in
// section. See comments for ObjectInfo class.
DILineInfo Info;
- DILineInfoSpecifier Spec;
- Tbl->getFileLineInfoForAddress(S->Offset + Offset, nullptr, Spec.FLIKind,
- Info);
+ Tbl->getFileLineInfoForAddress(
+ S->Offset + Offset, nullptr,
+ DILineInfoSpecifier::FileLineInfoKind::AbsoluteFilePath, Info);
if (Info.Line == 0)
return "";
- return Info.FileName + ":" + std::to_string(Info.Line);
+ std::string Ret = Info.FileName + ":" + std::to_string(Info.Line);
+#ifdef LLVM_ON_WIN32
+ // Converts path to use unix path separators so error message is
+ // consistent between platforms.
+ std::replace(Ret.begin(), Ret.end(), '\\', '/');
+#endif
+ return Ret;
}
// Returns "(internal)", "foo.a(bar.o)" or "baz.o".
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D27506.80551.patch
Type: text/x-patch
Size: 2137 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161207/c0a517bb/attachment.bin>
More information about the llvm-commits
mailing list