305 lines · plain
1RUN: dsymutil -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic.macho.x86_64 | FileCheck %s2RUN: dsymutil -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic-lto.macho.x86_64 | FileCheck %s --check-prefix=CHECK-LTO3RUN: dsymutil -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s --check-prefix=CHECK-ARCHIVE4RUN: dsymutil -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic.macho.x86_64 %p/Inputs/basic-lto.macho.x86_64 %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s --check-prefixes=CHECK,CHECK-LTO,CHECK-ARCHIVE5RUN: dsymutil -no-output -verbose -oso-prepend-path=%p -D %p/Inputs %p/Inputs/basic-relink.macho.arm64.dylib | FileCheck %s --check-prefix=CHECK-RELINK6RUN: dsymutil -no-output -verbose -oso-prepend-path=%p -D %p/Inputs %p/Inputs/two-level-relink.macho.arm64.dylib | FileCheck %s --check-prefix=CHECK-RELINK-TWO7RUN: dsymutil -no-output -verbose -oso-prepend-path=%p -build-variant-suffix=_debug -D WrongPath -D %p/Inputs %p/Inputs/variant-relink.macho.arm64.dylib | FileCheck %s --check-prefix=CHECK-RELINK-VARIANT8 9RUN: dsymutil --linker parallel -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic.macho.x86_64 | FileCheck %s10RUN: dsymutil --linker parallel -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic-lto.macho.x86_64 | FileCheck %s --check-prefix=CHECK-LTO11RUN: dsymutil --linker parallel -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s --check-prefix=CHECK-ARCHIVE12RUN: dsymutil --linker parallel -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic.macho.x86_64 %p/Inputs/basic-lto.macho.x86_64 %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s --check-prefixes=CHECK,CHECK-LTO,CHECK-ARCHIVE13 14This test check the basic Dwarf linking process through the debug dumps.15 16================================= Simple link ================================17CHECK: DEBUG MAP OBJECT: {{.*}}basic1.macho.x86_64.o18CHECK: Input compilation unit:19CHECK-NEXT: TAG_compile_unit20CHECK-NOT: TAG21CHECK: AT_name {{.*}}basic1.c22 23CHECK: DEBUG MAP OBJECT: {{.*}}basic2.macho.x86_64.o24CHECK: Input compilation unit:25CHECK-NEXT: TAG_compile_unit26CHECK-NOT: TAG27CHECK: AT_name {{.*}}basic2.c28 29CHECK: DEBUG MAP OBJECT: {{.*}}basic3.macho.x86_64.o30CHECK: Input compilation unit:31CHECK-NEXT: TAG_compile_unit32CHECK-NOT: TAG33CHECK: AT_name {{.*}}basic3.c34 35CHECK-NOT: Found valid debug map entry36CHECK: Found valid debug map entry: _main 0x0000000000000000 => 0x0000000100000ea037CHECK-NEXT: Keeping subprogram DIE:38CHECK-NEXT: DW_TAG_subprogram39CHECK-NEXT: DW_AT_name{{.*}}"main"40 41CHECK: Found valid debug map entry: _private_int 0x0000000000000560 => 0x000000010000100842CHECK-NEXT: Keeping variable DIE:43CHECK-NEXT: DW_TAG_variable44CHECK-NEXT: DW_AT_name {{.*}}"private_int"45CHECK-NOT: Found valid debug map entry46CHECK: Found valid debug map entry: _baz 0x0000000000000310 => 0x000000010000100047CHECK-NEXT: Keeping variable DIE:48CHECK-NEXT: DW_TAG_variable49CHECK-NEXT: DW_AT_name {{.*}}"baz"50CHECK-NOT: Found valid debug map entry51CHECK: Found valid debug map entry: _foo 0x0000000000000020 => 0x0000000100000ed052CHECK-NEXT: Keeping subprogram DIE:53CHECK-NEXT: DW_TAG_subprogram54CHECK-NEXT: DW_AT_name {{.*}}"foo"55CHECK-NOT: Found valid debug map entry56CHECK: Found valid debug map entry: _inc 0x0000000000000070 => 0x0000000100000f2057CHECK-NEXT: Keeping subprogram DIE:58CHECK-NEXT: DW_TAG_subprogram59CHECK-NEXT: DW_AT_name {{.*}}"inc"60 61CHECK-NOT: Found valid debug map entry62CHECK: Found valid debug map entry: _val 0xffffffffffffffff => 0x000000010000100463CHECK-NEXT: Keeping variable DIE:64CHECK-NEXT: DW_TAG_variable65CHECK-NEXT: DW_AT_name {{.*}}"val"66CHECK-NOT: Found valid debug map entry67CHECK: Found valid debug map entry: _bar 0x0000000000000020 => 0x0000000100000f4068CHECK-NEXT: Keeping subprogram DIE:69CHECK-NEXT: DW_TAG_subprogram70CHECK-NEXT: DW_AT_name {{.*}}"bar"71CHECK-NOT: Found valid debug map entry72CHECK: Found valid debug map entry: _inc 0x0000000000000070 => 0x0000000100000f9073CHECK-NEXT: Keeping subprogram DIE:74CHECK-NEXT: DW_TAG_subprogram75CHECK-NEXT: DW_AT_name {{.*}}"inc")76 77 78================================= LTO link ================================79CHECK-LTO: DEBUG MAP OBJECT: {{.*}}basic-lto.macho.x86_64.o80CHECK-LTO: Input compilation unit:81CHECK-LTO-NEXT: TAG_compile_unit82CHECK-LTO-NOT: TAG83CHECK-LTO: AT_name {{.*}}basic1.c84CHECK-LTO: Input compilation unit:85CHECK-LTO-NEXT: TAG_compile_unit86CHECK-LTO-NOT: TAG87CHECK-LTO: AT_name {{.*}}basic2.c88CHECK-LTO: Input compilation unit:89CHECK-LTO-NEXT: TAG_compile_unit90CHECK-LTO-NOT: TAG91CHECK-LTO: AT_name {{.*}}basic3.c92 93CHECK-LTO-NOT: Found valid debug map entry94CHECK-LTO: Found valid debug map entry: _main 0x0000000000000000 => 0x0000000100000f4095CHECK-LTO-NEXT: Keeping subprogram DIE:96CHECK-LTO-NEXT: DW_TAG_subprogram97CHECK-LTO-NEXT: DW_AT_name {{.*}}"main"98CHECK-LTO-NOT: Found valid debug map entry99CHECK-LTO: Found valid debug map entry: _private_int 0x00000000000008e8 => 0x0000000100001008100CHECK-LTO-NEXT: Keeping variable DIE:101CHECK-LTO-NEXT: DW_TAG_variable102CHECK-LTO-NEXT: DW_AT_name {{.*}}"private_int"103CHECK-LTO-NOT: Found valid debug map entry104CHECK-LTO: Found valid debug map entry: _baz 0x0000000000000658 => 0x0000000100001000105CHECK-LTO-NEXT: Keeping variable DIE:106CHECK-LTO-NEXT: DW_TAG_variable107CHECK-LTO-NEXT: DW_AT_name {{.*}} "baz"108CHECK-LTO-NOT: Found valid debug map entry109CHECK-LTO: Found valid debug map entry: _foo 0x0000000000000010 => 0x0000000100000f50110CHECK-LTO-NEXT: Keeping subprogram DIE:111CHECK-LTO-NEXT: DW_TAG_subprogram112CHECK-LTO-NEXT: DW_AT_name {{.*}}"foo"113CHECK-LTO-NOT: Found valid debug map entry114CHECK-LTO: Found valid debug map entry: _val 0x00000000000008ec => 0x0000000100001004115CHECK-LTO-NEXT: Keeping variable DIE:116CHECK-LTO-NEXT: DW_TAG_variable117CHECK-LTO-NEXT: DW_AT_name {{.*}}"val"118CHECK-LTO-NOT: Found valid debug map entry119CHECK-LTO: Found valid debug map entry: _bar 0x0000000000000050 => 0x0000000100000f90120CHECK-LTO-NEXT: Keeping subprogram DIE:121CHECK-LTO-NEXT: DW_TAG_subprogram122CHECK-LTO-NEXT: DW_AT_name {{.*}}"bar"123 124 125================================= Archive link ================================126CHECK-ARCHIVE: DEBUG MAP OBJECT: {{.*}}basic1.macho.x86_64.o127CHECK-ARCHIVE: Input compilation unit:128CHECK-ARCHIVE-NEXT: TAG_compile_unit129CHECK-ARCHIVE-NOT: TAG130CHECK-ARCHIVE: AT_name {{.*}}basic1.c131 132CHECK-ARCHIVE: DEBUG MAP OBJECT: {{.*}}libbasic.a(basic2.macho.x86_64.o)133CHECK-ARCHIVE: Input compilation unit:134CHECK-ARCHIVE-NEXT: TAG_compile_unit135CHECK-ARCHIVE-NOT: TAG136CHECK-ARCHIVE: AT_name {{.*}}basic2.c137 138CHECK-ARCHIVE: DEBUG MAP OBJECT: {{.*}}libbasic.a(basic3.macho.x86_64.o)139CHECK-ARCHIVE: Input compilation unit:140CHECK-ARCHIVE-NEXT: TAG_compile_unit141CHECK-ARCHIVE-NOT: TAG142CHECK-ARCHIVE: AT_name {{.*}}basic3.c143 144CHECK-ARCHIVE-NOT: Found valid debug map entry145CHECK-ARCHIVE: Found valid debug map entry: _main 0x0000000000000000 => 0x0000000100000ea0146CHECK-ARCHIVE-NEXT: Keeping subprogram DIE:147CHECK-ARCHIVE-NEXT: DW_TAG_subprogram148CHECK-ARCHIVE-NEXT: DW_AT_name{{.*}}"main"149 150CHECK-ARCHIVE-NOT: Found valid debug map entry151CHECK-ARCHIVE: Found valid debug map entry: _private_int 0x0000000000000560 => 0x0000000100001004152CHECK-ARCHIVE-NEXT: Keeping variable DIE:153CHECK-ARCHIVE-NEXT: DW_TAG_variable154CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"private_int"155CHECK-ARCHIVE-NOT: Found valid debug map entry156CHECK-ARCHIVE: Found valid debug map entry: _baz 0x0000000000000310 => 0x0000000100001000157CHECK-ARCHIVE-NEXT: Keeping variable DIE:158CHECK-ARCHIVE-NEXT: DW_TAG_variable159CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"baz"160CHECK-ARCHIVE-NOT: Found valid debug map entry161CHECK-ARCHIVE: Found valid debug map entry: _foo 0x0000000000000020 => 0x0000000100000ed0162CHECK-ARCHIVE-NEXT: Keeping subprogram DIE:163CHECK-ARCHIVE-NEXT: DW_TAG_subprogram164CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"foo"165CHECK-ARCHIVE-NOT: Found valid debug map entry166CHECK-ARCHIVE: Found valid debug map entry: _inc 0x0000000000000070 => 0x0000000100000f20167CHECK-ARCHIVE-NEXT: Keeping subprogram DIE:168CHECK-ARCHIVE-NEXT: DW_TAG_subprogram169CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"inc"170 171CHECK-ARCHIVE-NOT: Found valid debug map entry172CHECK-ARCHIVE: Found valid debug map entry: _val 0xffffffffffffffff => 0x0000000100001008173CHECK-ARCHIVE-NEXT: Keeping variable DIE:174CHECK-ARCHIVE-NEXT: DW_TAG_variable175CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"val"176CHECK-ARCHIVE-NOT: Found valid debug map entry177CHECK-ARCHIVE: Found valid debug map entry: _bar 0x0000000000000020 => 0x0000000100000f40178CHECK-ARCHIVE-NEXT: Keeping subprogram DIE:179CHECK-ARCHIVE-NEXT: DW_TAG_subprogram180CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"bar"181CHECK-ARCHIVE-NOT: Found valid debug map entry182CHECK-ARCHIVE: Found valid debug map entry: _inc 0x0000000000000070 => 0x0000000100000f90183CHECK-ARCHIVE-NEXT: Keeping subprogram DIE:184CHECK-ARCHIVE-NEXT: DW_TAG_subprogram185CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"inc")186 187 188================================= Simple relink ================================189CHECK-RELINK: DEBUG MAP OBJECT: {{.*}}basic-relink.macho.arm64.o190CHECK-RELINK: Input compilation unit:191CHECK-RELINK-NEXT: TAG_compile_unit192CHECK-RELINK-NOT: TAG193CHECK-RELINK: AT_name {{.*}}basic-relink.macho.arm64.c194 195CHECK-RELINK: DEBUG MAP OBJECT: {{.*}}foo-relink.dylib196CHECK-RELINK: Input compilation unit:197CHECK-RELINK-NEXT: TAG_compile_unit198CHECK-RELINK-NOT: TAG199CHECK-RELINK: AT_name {{.*}}foo-relink.c200 201CHECK-RELINK: Input compilation unit:202CHECK-RELINK-NEXT: TAG_compile_unit203CHECK-RELINK-NOT: TAG204CHECK-RELINK: AT_name {{.*}}altfoo-relink.c205 206CHECK-RELINK: DEBUG MAP OBJECT: {{.*}}bar-relink.dylib207CHECK-RELINK: Input compilation unit:208CHECK-RELINK-NEXT: TAG_compile_unit209CHECK-RELINK-NOT: TAG210CHECK-RELINK: AT_name {{.*}}bar-relink.c211 212CHECK-RELINK-NOT: Found valid debug map entry213CHECK-RELINK: Found valid debug map entry: _display 0x0000000000000000 => 0x0000000000003f10214CHECK-RELINK-NEXT: Keeping subprogram DIE:215CHECK-RELINK-NEXT: DW_TAG_subprogram216CHECK-RELINK: DW_AT_name{{.*}}"display"217 218CHECK-RELINK: Found valid debug map entry: _foo 0x0000000000003f54 => 0x0000000000003f2c219CHECK-RELINK-NEXT: Keeping subprogram DIE:220CHECK-RELINK-NEXT: DW_TAG_subprogram221CHECK-RELINK: DW_AT_name {{.*}}"foo"222 223CHECK-RELINK-NOT: Found valid debug map entry224CHECK-RELINK: Found valid debug map entry: _foo_unused 0x0000000000003f74 => 0x0000000000003f4c225CHECK-RELINK-NEXT: Keeping subprogram DIE:226CHECK-RELINK-NEXT: DW_TAG_subprogram227CHECK-RELINK: DW_AT_name {{.*}}"foo_unused"228 229CHECK-RELINK-NOT: Found valid debug map entry230CHECK-RELINK: Found valid debug map entry: _altfoo 0x0000000000003f7c => 0x0000000000003f54231CHECK-RELINK-NEXT: Keeping subprogram DIE:232CHECK-RELINK-NEXT: DW_TAG_subprogram233CHECK-RELINK: DW_AT_name {{.*}}"altfoo"234 235CHECK-RELINK-NOT: Found valid debug map entry236CHECK-RELINK: Found valid debug map entry: _baz 0x0000000000004000 => 0x0000000000008000237CHECK-RELINK-NEXT: Keeping variable DIE:238CHECK-RELINK-NEXT: DW_TAG_variable239CHECK-RELINK-NEXT: DW_AT_name {{.*}}"baz"240 241CHECK-RELINK-NOT: Found valid debug map entry242CHECK-RELINK: Found valid debug map entry: _bar 0x0000000000003fa0 => 0x0000000000003f78243CHECK-RELINK-NEXT: Keeping subprogram DIE:244CHECK-RELINK-NEXT: DW_TAG_subprogram245CHECK-RELINK: DW_AT_name {{.*}}"bar"246 247================================= Two level relink ================================248CHECK-RELINK-TWO: DEBUG MAP OBJECT: {{.*}}proxy-relink.dylib249CHECK-RELINK-TWO: Input compilation unit:250CHECK-RELINK-TWO-NEXT: TAG_compile_unit251CHECK-RELINK-TWO-NOT: TAG252CHECK-RELINK-TWO: AT_name {{.*}}two-level-relink.macho.arm64.c253 254CHECK-RELINK-TWO: Input compilation unit:255CHECK-RELINK-TWO-NEXT: TAG_compile_unit256CHECK-RELINK-TWO-NOT: TAG257CHECK-RELINK-TWO: AT_name {{.*}}bar-relink.c258CHECK-RELINK-TWO: DW_AT_APPLE_origin {{.*}}/path/to/bar-relink.dylib259 260CHECK-RELINK-TWO: Input compilation unit:261CHECK-RELINK-TWO-NEXT: TAG_compile_unit262CHECK-RELINK-TWO-NOT: TAG263CHECK-RELINK-TWO: AT_name {{.*}}foo-relink.c264CHECK-RELINK-TWO: DW_AT_APPLE_origin {{.*}}/path/to/foo-relink.dylib265 266CHECK-RELINK-TWO: Input compilation unit:267CHECK-RELINK-TWO-NEXT: TAG_compile_unit268CHECK-RELINK-TWO-NOT: TAG269CHECK-RELINK-TWO: AT_name {{.*}}altfoo-relink.c270CHECK-RELINK-TWO: DW_AT_APPLE_origin {{.*}}/path/to/foo-relink.dylib271 272CHECK-RELINK-TWO-NOT: Found valid debug map entry273CHECK-RELINK-TWO: Found valid debug map entry: _display 0x0000000000003f1c => 0x0000000000003f1c274CHECK-RELINK-TWO-NEXT: Keeping subprogram DIE:275CHECK-RELINK-TWO-NEXT: DW_TAG_subprogram276CHECK-RELINK-TWO: DW_AT_name{{.*}}"display"277 278CHECK-RELINK-TWO-NOT: Found valid debug map entry279CHECK-RELINK-TWO: Found valid debug map entry: _baz 0x0000000000008000 => 0x0000000000008000280CHECK-RELINK-TWO-NEXT: Keeping variable DIE:281CHECK-RELINK-TWO-NEXT: DW_TAG_variable282CHECK-RELINK-TWO-NEXT: DW_AT_name {{.*}}"baz"283 284CHECK-RELINK-TWO-NOT: Found valid debug map entry285CHECK-RELINK-TWO: Found valid debug map entry: _bar 0x0000000000003f38 => 0x0000000000003f38286CHECK-RELINK-TWO-NEXT: Keeping subprogram DIE:287CHECK-RELINK-TWO-NEXT: DW_TAG_subprogram288CHECK-RELINK-TWO: DW_AT_name {{.*}}"bar"289 290CHECK-RELINK-TWO: Found valid debug map entry: _foo 0x0000000000003f40 => 0x0000000000003f40291CHECK-RELINK-TWO-NEXT: Keeping subprogram DIE:292CHECK-RELINK-TWO-NEXT: DW_TAG_subprogram293CHECK-RELINK-TWO: DW_AT_name {{.*}}"foo"294 295CHECK-RELINK-TWO-NOT: Found valid debug map entry296CHECK-RELINK-TWO: Found valid debug map entry: _altfoo 0x0000000000003f64 => 0x0000000000003f64297CHECK-RELINK-TWO-NEXT: Keeping subprogram DIE:298CHECK-RELINK-TWO-NEXT: DW_TAG_subprogram299CHECK-RELINK-TWO: DW_AT_name {{.*}}"altfoo"300 301================================= Build variants relink ================================302CHECK-RELINK-VARIANT: DEBUG MAP OBJECT: {{.*}}basic-relink.macho.arm64.o303CHECK-RELINK-VARIANT: DEBUG MAP OBJECT: {{.*}}foo-relink-variant_debug.dylib304CHECK-RELINK-VARIANT: DEBUG MAP OBJECT: {{.*}}bar-relink-variant.dylib305