summaryrefslogtreecommitdiff
path: root/test/COFF/pdb-relative-source-lines.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/COFF/pdb-relative-source-lines.test')
-rw-r--r--test/COFF/pdb-relative-source-lines.test98
1 files changed, 79 insertions, 19 deletions
diff --git a/test/COFF/pdb-relative-source-lines.test b/test/COFF/pdb-relative-source-lines.test
index 8c0894c218012..865d7a6d8a0a4 100644
--- a/test/COFF/pdb-relative-source-lines.test
+++ b/test/COFF/pdb-relative-source-lines.test
@@ -17,29 +17,89 @@ void bar(void) {
$ clang-cl -Xclang -fdebug-compilation-dir -Xclang . -c -Z7 pdb_lines*.c
-RUN: yaml2obj %S/Inputs/pdb_lines_1_relative.yaml -o %t.pdb_lines_1_relative.obj
-RUN: yaml2obj %S/Inputs/pdb_lines_2_relative.yaml -o %t.pdb_lines_2_relative.obj
-RUN: rm -f %t.exe %t.pdb
-RUN: lld-link -debug -pdbsourcepath:c:\\src -entry:main -nodefaultlib -out:%t.exe -pdb:%t.pdb %t.pdb_lines_1_relative.obj %t.pdb_lines_2_relative.obj
-RUN: llvm-pdbutil pdb2yaml -modules -module-files -subsections=lines,fc %t.pdb | FileCheck %s
-
-CHECK-LABEL: - Module: {{.*}}pdb_lines_1_relative.obj
-CHECK-NEXT: ObjFile: {{.*}}pdb_lines_1_relative.obj
+/pdbsourcepath: only sets the directory that relative paths are considered
+relative to, so this test needs to pass relative paths to lld-link for:
+1. The input obj files
+2. The /pdb: switch
+3. The lld-link invocation itself
+To achieve this, put all inputs of the lld-link invocation (including lld-link
+itself) in a temp directory that's cwd and then make sure to only use relative
+arguments when calling ./lld-link below.
+RUN: rm -rf %t
+RUN: mkdir %t
+RUN: cp lld-link %t/lld-link
+RUN: cd %t
+
+RUN: yaml2obj %S/Inputs/pdb_lines_1_relative.yaml -o %t/pdb_lines_1_relative.obj
+RUN: yaml2obj %S/Inputs/pdb_lines_2_relative.yaml -o %t/pdb_lines_2_relative.obj
+RUN: ./lld-link -debug "-pdbsourcepath:c:\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 %s
+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
+
+CHECK-LABEL: - Module: 'c:\src{{[\\/]}}pdb_lines_1_relative.obj'
+CHECK-NEXT: ObjFile: 'c:\src{{[\\/]}}pdb_lines_1_relative.obj'
CHECK: SourceFiles:
-CHECK-NEXT: - 'c:{{[\\/]}}src{{[\\/]}}pdb_lines_1.c'
-CHECK-NEXT: - 'c:{{[\\/]}}src{{[\\/]}}foo.h'
+CHECK-NEXT: - 'c:\src{{[\\/]}}pdb_lines_1.c'
+CHECK-NEXT: - 'c:\src{{[\\/]}}foo.h'
CHECK: Subsections:
-CHECK: - FileName: 'c:{{[\\/]}}src{{[\\/]}}pdb_lines_1.c'
-CHECK: - FileName: 'c:{{[\\/]}}src{{[\\/]}}foo.h'
+CHECK: - FileName: 'c:\src{{[\\/]}}pdb_lines_1.c'
+CHECK: - FileName: 'c:\src{{[\\/]}}foo.h'
CHECK: - !FileChecksums
-CHECK: - FileName: 'c:{{[\\/]}}src{{[\\/]}}pdb_lines_1.c'
-CHECK: - FileName: 'c:{{[\\/]}}src{{[\\/]}}foo.h'
+CHECK: - FileName: 'c:\src{{[\\/]}}pdb_lines_1.c'
+CHECK: - FileName: 'c:\src{{[\\/]}}foo.h'
-CHECK-LABEL: - Module: {{.*}}pdb_lines_2_relative.obj
-CHECK-NEXT: ObjFile: {{.*}}pdb_lines_2_relative.obj
+CHECK-LABEL: - Module: 'c:\src{{[\\/]}}pdb_lines_2_relative.obj'
+CHECK-NEXT: ObjFile: 'c:\src{{[\\/]}}pdb_lines_2_relative.obj'
CHECK: SourceFiles:
-CHECK-NEXT: - 'c:{{[\\/]}}src{{[\\/]}}pdb_lines_2.c'
+CHECK-NEXT: - 'c:\src{{[\\/]}}pdb_lines_2.c'
CHECK: Subsections:
-CHECK: - FileName: 'c:{{[\\/]}}src{{[\\/]}}pdb_lines_2.c'
+CHECK: - FileName: 'c:\src{{[\\/]}}pdb_lines_2.c'
CHECK: - !FileChecksums
-CHECK: - FileName: 'c:{{[\\/]}}src{{[\\/]}}pdb_lines_2.c'
+CHECK: - FileName: 'c:\src{{[\\/]}}pdb_lines_2.c'
+
+CHECK-LABEL: - Kind: S_ENVBLOCK
+CHECK-NEXT: EnvBlockSym:
+CHECK-NEXT: Entries:
+CHECK-NEXT: - cwd
+CHECK-NEXT: - 'c:\src'
+CHECK-NEXT: - exe
+CHECK-NEXT: - 'c:\src{{[\\/]}}lld-link'
+CHECK-NEXT: - pdb
+CHECK-NEXT: - 'c:\src{{[\\/]}}out.pdb'
+CHECK-NEXT: - cmd
+CHECK-NEXT: - '-debug -pdbsourcepath:c:\src -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb pdb_lines_1_relative.obj pdb_lines_2_relative.obj'
+
+
+POSIX-LABEL: - Module: '/usr/src{{[\\/]}}pdb_lines_1_relative.obj'
+POSIX-NEXT: ObjFile: '/usr/src{{[\\/]}}pdb_lines_1_relative.obj'
+POSIX: SourceFiles:
+POSIX-NEXT: - '/usr/src{{[\\/]}}pdb_lines_1.c'
+POSIX-NEXT: - '/usr/src{{[\\/]}}foo.h'
+POSIX: Subsections:
+POSIX: - FileName: '/usr/src{{[\\/]}}pdb_lines_1.c'
+POSIX: - FileName: '/usr/src{{[\\/]}}foo.h'
+POSIX: - !FileChecksums
+POSIX: - FileName: '/usr/src{{[\\/]}}pdb_lines_1.c'
+POSIX: - FileName: '/usr/src{{[\\/]}}foo.h'
+
+POSIX-LABEL: - Module: '/usr/src{{[\\/]}}pdb_lines_2_relative.obj'
+POSIX-NEXT: ObjFile: '/usr/src{{[\\/]}}pdb_lines_2_relative.obj'
+POSIX: SourceFiles:
+POSIX-NEXT: - '/usr/src{{[\\/]}}pdb_lines_2.c'
+POSIX: Subsections:
+POSIX: - FileName: '/usr/src{{[\\/]}}pdb_lines_2.c'
+POSIX: - !FileChecksums
+POSIX: - FileName: '/usr/src{{[\\/]}}pdb_lines_2.c'
+
+POSIX-LABEL: - Kind: S_ENVBLOCK
+POSIX-NEXT: EnvBlockSym:
+POSIX-NEXT: Entries:
+POSIX-NEXT: - cwd
+POSIX-NEXT: - '/usr/src'
+POSIX-NEXT: - exe
+POSIX-NEXT: - '/usr/src{{[\\/]}}lld-link'
+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'