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". 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: 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