[LLD][COFF] Clean paths in PDB even when /pdbsourcepath is omitted
authorAlexandre Ganea <alexandre.ganea@ubisoft.com>
Tue, 31 Aug 2021 23:03:44 +0000 (19:03 -0400)
committerAlexandre Ganea <alexandre.ganea@ubisoft.com>
Tue, 31 Aug 2021 23:05:10 +0000 (19:05 -0400)
Differential Revision: https://reviews.llvm.org/D109030

lld/COFF/PDB.cpp
lld/test/COFF/pdb-relative-source-lines.test

index e355857..189bf60 100644 (file)
@@ -266,6 +266,7 @@ static void pdbMakeAbsolute(SmallVectorImpl<char> &fileName) {
   if (config->pdbSourcePath.empty()) {
     sys::path::native(fileName);
     sys::fs::make_absolute(fileName);
+    sys::path::remove_dots(fileName, true);
     return;
   }
 
index 5470567..cc241c7 100644 (file)
@@ -37,6 +37,10 @@ RUN: llvm-pdbutil pdb2yaml -modules -module-files -module-syms -subsections=line
 RUN: ./lld-link -debug "-pdbsourcepath:/usr/src" -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb pdb_lines_1_relative.obj pdb_lines_2_relative.obj
 RUN: llvm-pdbutil pdb2yaml -modules -module-files -module-syms -subsections=lines,fc %t/out.pdb | FileCheck --check-prefix=POSIX %s
 
+Also check without -pdbsourcepath
+RUN: ./lld-link -debug -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb pdb_lines_1_relative.obj pdb_lines_2_relative.obj
+RUN: llvm-pdbutil pdb2yaml -modules -module-files -module-syms -subsections=lines,fc %t/out.pdb | FileCheck --check-prefix=ABSOLUTE %s
+
 CHECK-LABEL:  - Module:          'c:\src\pdb_lines_1_relative.obj'
 CHECK-NEXT:     ObjFile:         'c:\src\pdb_lines_1_relative.obj'
 CHECK:          SourceFiles:
@@ -103,3 +107,6 @@ POSIX-NEXT:         - pdb
 POSIX-NEXT:         - '/usr/src/out.pdb'
 POSIX-NEXT:         - cmd
 POSIX-NEXT:         - '-debug -pdbsourcepath:/usr/src -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb pdb_lines_1_relative.obj pdb_lines_2_relative.obj'
+
+ABSOLUTE-LABEL: StringTable:
+ABSOLUTE-NOT: {{/|\\}}.{{/|\\}}pdb_lines_1.c