brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.8 KiB · 025495b Raw
146 lines · plain
1Test the linker line tables on roughly the following example:2 3==> foo.h <==4void bar(void);5inline void foo(void) {6  bar();7}8==> pdb_lines_1.c <==9#include "foo.h"10int main(void) {11  foo();12  return 42;13}14==> pdb_lines_2.c <==15void bar(void) {16}17 18$ clang-cl -fdebug-compilation-dir . -no-canonical-prefixes -c -Z7 pdb_lines*.c19$ obj2yaml pdb_lines_1.obj > pdb_lines_1_relative.yaml20$ obj2yaml pdb_lines_2.obj > pdb_lines_2_relative.yaml21 22/pdbsourcepath: only sets the directory that relative paths are considered23relative to, so this test needs to pass relative paths to lld-link for:241. The input obj files252. The /pdb: switch263. The lld-link invocation itself27To achieve this, put all inputs of the lld-link invocation (including lld-link28itself) in a temp directory that's cwd and then make sure to only use relative29arguments when calling ./lld-link below.30RUN: rm -rf %t31RUN: mkdir %t32RUN: cp lld-link %t/lld-link33RUN: cd %t34 35RUN: yaml2obj %S/Inputs/pdb_lines_1_relative.yaml -o %t/pdb_lines_1_relative.obj36RUN: yaml2obj %S/Inputs/pdb_lines_2_relative.yaml -o %t/pdb_lines_2_relative.obj37RUN: ./lld-link -debug "-pdbsourcepath:c:\src" -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb pdb_lines_1_relative.obj pdb_lines_2_relative.obj38RUN: llvm-pdbutil pdb2yaml -ipi-stream -modules -module-files -module-syms -subsections=lines,fc %t/out.pdb | FileCheck %s39RUN: ./lld-link -debug "-pdbsourcepath:/usr/src" -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb pdb_lines_1_relative.obj pdb_lines_2_relative.obj40RUN: llvm-pdbutil pdb2yaml -ipi-stream -modules -module-files -module-syms -subsections=lines,fc %t/out.pdb | FileCheck --check-prefix=POSIX %s41 42Also check without -pdbsourcepath43RUN: ./lld-link -debug -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb pdb_lines_1_relative.obj pdb_lines_2_relative.obj44RUN: llvm-pdbutil pdb2yaml -modules -module-files -module-syms -subsections=lines,fc %t/out.pdb | FileCheck --check-prefix=ABSOLUTE %s45 46Clean up copy of large binary copied into temp directory to avoid bloat.47RUN: rm -f ./lld-link || true48 49CHECK-LABEL:  - Module:          'c:\src\pdb_lines_1_relative.obj'50CHECK-NEXT:     ObjFile:         'c:\src\pdb_lines_1_relative.obj'51CHECK:          SourceFiles:52CHECK-NEXT:       - 'c:\src\pdb_lines_1.c'53CHECK-NEXT:       - 'c:\src\foo.h'54CHECK:          Subsections:55CHECK:                - FileName:        'c:\src\pdb_lines_1.c'56CHECK:                - FileName:        'c:\src\foo.h'57CHECK:            - !FileChecksums58CHECK:                - FileName:        'c:\src\pdb_lines_1.c'59CHECK:                - FileName:        'c:\src\foo.h'60 61CHECK-LABEL:  - Module:          'c:\src\pdb_lines_2_relative.obj'62CHECK-NEXT:     ObjFile:         'c:\src\pdb_lines_2_relative.obj'63CHECK:          SourceFiles:64CHECK-NEXT:       - 'c:\src\pdb_lines_2.c'65CHECK:          Subsections:66CHECK:                - FileName:        'c:\src\pdb_lines_2.c'67CHECK:            - !FileChecksums68CHECK:                - FileName:        'c:\src\pdb_lines_2.c'69 70CHECK-LABEL:  - Kind:            S_ENVBLOCK71CHECK-NEXT:     EnvBlockSym:     72CHECK-NEXT:       Entries:     73CHECK-NEXT:         - cwd74CHECK-NEXT:         - 'c:\src'75CHECK-NEXT:         - exe76CHECK-NEXT:         - 'c:\src\lld-link'77CHECK-NEXT:         - pdb 78CHECK-NEXT:         - 'c:\src\out.pdb'79CHECK-NEXT:         - cmd80CHECK-NEXT:         - '-debug -pdbsourcepath:c:\src -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb'81 82CHECK-LABEL: IpiStream:83 84CHECK:    - Kind:            LF_STRING_ID85CHECK-NEXT:      StringId:86CHECK-NEXT:        Id:              087CHECK-NEXT:        String:          .88CHECK-NEXT:     - Kind:            LF_STRING_ID89CHECK-NEXT:       StringId:90CHECK-NEXT:         Id:              091CHECK-NEXT:         String:          pdb_lines_1.c92CHECK-NEXT:     - Kind:            LF_STRING_ID93CHECK-NEXT:       StringId:94CHECK-NEXT:         Id:              095CHECK-NEXT:         String:          'buildninjaRel\bin\clang-cl.exe'96 97POSIX-LABEL:  - Module:          '/usr/src/pdb_lines_1_relative.obj'98POSIX-NEXT:     ObjFile:         '/usr/src/pdb_lines_1_relative.obj'99POSIX:          SourceFiles:100POSIX-NEXT:       - '/usr/src/pdb_lines_1.c'101POSIX-NEXT:       - '/usr/src/foo.h'102POSIX:          Subsections:103POSIX:                - FileName:        '/usr/src/pdb_lines_1.c'104POSIX:                - FileName:        '/usr/src/foo.h'105POSIX:            - !FileChecksums106POSIX:                - FileName:        '/usr/src/pdb_lines_1.c'107POSIX:                - FileName:        '/usr/src/foo.h'108 109POSIX-LABEL:  - Module:          '/usr/src/pdb_lines_2_relative.obj'110POSIX-NEXT:     ObjFile:         '/usr/src/pdb_lines_2_relative.obj'111POSIX:          SourceFiles:112POSIX-NEXT:       - '/usr/src/pdb_lines_2.c'113POSIX:          Subsections:114POSIX:                - FileName:        '/usr/src/pdb_lines_2.c'115POSIX:            - !FileChecksums116POSIX:                - FileName:        '/usr/src/pdb_lines_2.c'117 118POSIX-LABEL:  - Kind:            S_ENVBLOCK119POSIX-NEXT:     EnvBlockSym:     120POSIX-NEXT:       Entries:     121POSIX-NEXT:         - cwd122POSIX-NEXT:         - '/usr/src'123POSIX-NEXT:         - exe124POSIX-NEXT:         - '/usr/src/lld-link'125POSIX-NEXT:         - pdb 126POSIX-NEXT:         - '/usr/src/out.pdb'127POSIX-NEXT:         - cmd128POSIX-NEXT:         - '-debug -pdbsourcepath:/usr/src -entry:main -nodefaultlib -out:out.exe -pdb:out.pdb'129 130ABSOLUTE-LABEL: StringTable:131ABSOLUTE-NOT: {{/|\\}}.{{/|\\}}pdb_lines_1.c132 133POSIX-LABEL: IpiStream:134POSIX:    - Kind:            LF_STRING_ID135POSIX-NEXT:      StringId:136POSIX-NEXT:        Id:              0137POSIX-NEXT:        String:          .138POSIX-NEXT:     - Kind:            LF_STRING_ID139POSIX-NEXT:       StringId:140POSIX-NEXT:         Id:              0141POSIX-NEXT:         String:          pdb_lines_1.c142POSIX-NEXT:     - Kind:            LF_STRING_ID143POSIX-NEXT:       StringId:144POSIX-NEXT:         Id:              0145POSIX-NEXT:         String:          'buildninjaRel\bin\clang-cl.exe'146