1 RUN: llvm-dsymutil -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic.macho.x86_64 | FileCheck %s 2 RUN: llvm-dsymutil -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic-lto.macho.x86_64 | FileCheck %s --check-prefix=CHECK-LTO 3 RUN: llvm-dsymutil -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s --check-prefix=CHECK-ARCHIVE 4 RUN: llvm-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-prefix=CHECK --check-prefix=CHECK-LTO --check-prefix=CHECK-ARCHIVE 5 6 This test check the basic Dwarf linking process through the debug dumps. 7 8 ================================= Simple link ================================ 9 CHECK: DEBUG MAP OBJECT: {{.*}}basic1.macho.x86_64.o 10 CHECK: Input compilation unit: 11 CHECK-NEXT: TAG_compile_unit 12 CHECK-NOT: TAG 13 CHECK: AT_name {{.*}}basic1.c 14 CHECK-NOT: Found valid debug map entry 15 CHECK: Found valid debug map entry: _main 0000000000000000 => 0000000100000ea0 16 CHECK-NEXT: DW_TAG_subprogram 17 CHECK-NEXT: DW_AT_name{{.*}}"main" 18 19 CHECK: DEBUG MAP OBJECT: {{.*}}basic2.macho.x86_64.o 20 CHECK: Input compilation unit: 21 CHECK-NEXT: TAG_compile_unit 22 CHECK-NOT: TAG 23 CHECK: AT_name {{.*}}basic2.c 24 CHECK-NOT: Found valid debug map entry 25 CHECK: Found valid debug map entry: _private_int 0000000000000560 => 0000000100001008 26 CHECK-NEXT: DW_TAG_variable 27 CHECK-NEXT: DW_AT_name {{.*}}"private_int" 28 CHECK-NOT: Found valid debug map entry 29 CHECK: Found valid debug map entry: _baz 0000000000000310 => 0000000100001000 30 CHECK-NEXT: DW_TAG_variable 31 CHECK-NEXT: DW_AT_name {{.*}}"baz" 32 CHECK-NOT: Found valid debug map entry 33 CHECK: Found valid debug map entry: _foo 0000000000000020 => 0000000100000ed0 34 CHECK-NEXT: DW_TAG_subprogram 35 CHECK-NEXT: DW_AT_name {{.*}}"foo" 36 CHECK-NOT: Found valid debug map entry 37 CHECK: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f20 38 CHECK-NEXT: DW_TAG_subprogram 39 CHECK-NEXT: DW_AT_name {{.*}}"inc" 40 41 CHECK: DEBUG MAP OBJECT: {{.*}}basic3.macho.x86_64.o 42 CHECK: Input compilation unit: 43 CHECK-NEXT: TAG_compile_unit 44 CHECK-NOT: TAG 45 CHECK: AT_name {{.*}}basic3.c 46 CHECK-NOT: Found valid debug map entry 47 CHECK: Found valid debug map entry: _val ffffffffffffffff => 0000000100001004 48 CHECK-NEXT: DW_TAG_variable 49 CHECK-NEXT: DW_AT_name {{.*}}"val" 50 CHECK-NOT: Found valid debug map entry 51 CHECK: Found valid debug map entry: _bar 0000000000000020 => 0000000100000f40 52 CHECK-NEXT: DW_TAG_subprogram 53 CHECK-NEXT: DW_AT_name {{.*}}"bar" 54 CHECK-NOT: Found valid debug map entry 55 CHECK: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f90 56 CHECK-NEXT: DW_TAG_subprogram 57 CHECK-NEXT: DW_AT_name {{.*}}"inc") 58 59 60 ================================= LTO link ================================ 61 CHECK-LTO: DEBUG MAP OBJECT: {{.*}}basic-lto.macho.x86_64.o 62 CHECK-LTO: Input compilation unit: 63 CHECK-LTO-NEXT: TAG_compile_unit 64 CHECK-LTO-NOT: TAG 65 CHECK-LTO: AT_name {{.*}}basic1.c 66 CHECK-LTO: Input compilation unit: 67 CHECK-LTO-NEXT: TAG_compile_unit 68 CHECK-LTO-NOT: TAG 69 CHECK-LTO: AT_name {{.*}}basic2.c 70 CHECK-LTO: Input compilation unit: 71 CHECK-LTO-NEXT: TAG_compile_unit 72 CHECK-LTO-NOT: TAG 73 CHECK-LTO: AT_name {{.*}}basic3.c 74 75 CHECK-LTO-NOT: Found valid debug map entry 76 CHECK-LTO: Found valid debug map entry: _main 0000000000000000 => 0000000100000f40 77 CHECK-LTO-NEXT: DW_TAG_subprogram 78 CHECK-LTO-NEXT: DW_AT_name {{.*}}"main" 79 CHECK-LTO-NOT: Found valid debug map entry 80 CHECK-LTO: Found valid debug map entry: _private_int 00000000000008e8 => 0000000100001008 81 CHECK-LTO-NEXT: DW_TAG_variable 82 CHECK-LTO-NEXT: DW_AT_name {{.*}}"private_int" 83 CHECK-LTO-NOT: Found valid debug map entry 84 CHECK-LTO: Found valid debug map entry: _baz 0000000000000658 => 0000000100001000 85 CHECK-LTO-NEXT: DW_TAG_variable 86 CHECK-LTO-NEXT: DW_AT_name {{.*}} "baz" 87 CHECK-LTO-NOT: Found valid debug map entry 88 CHECK-LTO: Found valid debug map entry: _foo 0000000000000010 => 0000000100000f50 89 CHECK-LTO-NEXT: DW_TAG_subprogram 90 CHECK-LTO-NEXT: DW_AT_name {{.*}}"foo" 91 CHECK-LTO-NOT: Found valid debug map entry 92 CHECK-LTO: Found valid debug map entry: _val 00000000000008ec => 0000000100001004 93 CHECK-LTO-NEXT: DW_TAG_variable 94 CHECK-LTO-NEXT: DW_AT_name {{.*}}"val" 95 CHECK-LTO-NOT: Found valid debug map entry 96 CHECK-LTO: Found valid debug map entry: _bar 0000000000000050 => 0000000100000f90 97 CHECK-LTO-NEXT: DW_TAG_subprogram 98 CHECK-LTO-NEXT: DW_AT_name {{.*}}"bar" 99 100 101 ================================= Archive link ================================ 102 CHECK-ARCHIVE: DEBUG MAP OBJECT: {{.*}}basic1.macho.x86_64.o 103 CHECK-ARCHIVE: Input compilation unit: 104 CHECK-ARCHIVE-NEXT: TAG_compile_unit 105 CHECK-ARCHIVE-NOT: TAG 106 CHECK-ARCHIVE: AT_name {{.*}}basic1.c 107 CHECK-ARCHIVE-NOT: Found valid debug map entry 108 CHECK-ARCHIVE: Found valid debug map entry: _main 0000000000000000 => 0000000100000ea0 109 CHECK-ARCHIVE-NEXT: DW_TAG_subprogram 110 CHECK-ARCHIVE-NEXT: DW_AT_name{{.*}}"main" 111 112 CHECK-ARCHIVE: DEBUG MAP OBJECT: {{.*}}libbasic.a(basic2.macho.x86_64.o) 113 CHECK-ARCHIVE: Input compilation unit: 114 CHECK-ARCHIVE-NEXT: TAG_compile_unit 115 CHECK-ARCHIVE-NOT: TAG 116 CHECK-ARCHIVE: AT_name {{.*}}basic2.c 117 CHECK-ARCHIVE-NOT: Found valid debug map entry 118 CHECK-ARCHIVE: Found valid debug map entry: _private_int 0000000000000560 => 0000000100001004 119 CHECK-ARCHIVE-NEXT: DW_TAG_variable 120 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"private_int" 121 CHECK-ARCHIVE-NOT: Found valid debug map entry 122 CHECK-ARCHIVE: Found valid debug map entry: _baz 0000000000000310 => 0000000100001000 123 CHECK-ARCHIVE-NEXT: DW_TAG_variable 124 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"baz" 125 CHECK-ARCHIVE-NOT: Found valid debug map entry 126 CHECK-ARCHIVE: Found valid debug map entry: _foo 0000000000000020 => 0000000100000ed0 127 CHECK-ARCHIVE-NEXT: DW_TAG_subprogram 128 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"foo" 129 CHECK-ARCHIVE-NOT: Found valid debug map entry 130 CHECK-ARCHIVE: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f20 131 CHECK-ARCHIVE-NEXT: DW_TAG_subprogram 132 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"inc" 133 134 CHECK-ARCHIVE: DEBUG MAP OBJECT: {{.*}}libbasic.a(basic3.macho.x86_64.o) 135 CHECK-ARCHIVE: Input compilation unit: 136 CHECK-ARCHIVE-NEXT: TAG_compile_unit 137 CHECK-ARCHIVE-NOT: TAG 138 CHECK-ARCHIVE: AT_name {{.*}}basic3.c 139 CHECK-ARCHIVE-NOT: Found valid debug map entry 140 CHECK-ARCHIVE: Found valid debug map entry: _val ffffffffffffffff => 0000000100001008 141 CHECK-ARCHIVE-NEXT: DW_TAG_variable 142 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"val" 143 CHECK-ARCHIVE-NOT: Found valid debug map entry 144 CHECK-ARCHIVE: Found valid debug map entry: _bar 0000000000000020 => 0000000100000f40 145 CHECK-ARCHIVE-NEXT: DW_TAG_subprogram 146 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"bar" 147 CHECK-ARCHIVE-NOT: Found valid debug map entry 148 CHECK-ARCHIVE: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f90 149 CHECK-ARCHIVE-NEXT: DW_TAG_subprogram 150 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"inc") 151