1RUN: dsymutil -f -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-lto.macho.x86_64 | llvm-dwarfdump -a - | FileCheck %s 2RUN: dsymutil -oso-prepend-path=%p/.. -dump-debug-map %p/../Inputs/basic-lto.macho.x86_64 | dsymutil -f -o - -y - | llvm-dwarfdump -a - | FileCheck %s 3 4RUN: dsymutil --linker parallel -f -o - -oso-prepend-path=%p/.. \ 5RUN: %p/../Inputs/basic-lto.macho.x86_64 | llvm-dwarfdump -a - | FileCheck %s 6RUN: dsymutil --linker parallel -oso-prepend-path=%p/.. -dump-debug-map \ 7RUN: %p/../Inputs/basic-lto.macho.x86_64 | dsymutil -f -o - -y - | \ 8RUN: llvm-dwarfdump -a - | FileCheck %s 9 10CHECK: file format Mach-O 64-bit x86-64 11 12CHECK: debug_info contents 13 14CHECK: Compile Unit: 15 16CHECK: DW_TAG_compile_unit 17CHECK: DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)") 18CHECK: DW_AT_language (DW_LANG_C99) 19CHECK: DW_AT_name ("basic1.c") 20CHECK: DW_AT_stmt_list (0x00000000) 21CHECK: DW_AT_comp_dir ("/Inputs") 22CHECK: DW_AT_low_pc (0x0000000100000f40) 23CHECK: DW_TAG_subprogram 24CHECK: DW_AT_name ("main") 25CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c") 26CHECK: DW_AT_decl_line (23) 27CHECK: DW_AT_prototyped (0x01) 28CHECK: DW_AT_type (0x00000063 29CHECK: DW_AT_external (0x01) 30CHECK: DW_AT_accessibility (DW_ACCESS_public) 31CHECK: DW_AT_low_pc (0x0000000100000f40) 32CHECK: DW_AT_high_pc (0x0000000100000f4b) 33CHECK: DW_AT_frame_base (DW_OP_reg6 RBP) 34CHECK: DW_TAG_formal_parameter 35CHECK: DW_AT_name ("argc") 36CHECK: DW_AT_type (0x00000063 37CHECK: DW_AT_location (DW_OP_reg5 RDI, DW_OP_piece 0x4) 38CHECK: DW_TAG_formal_parameter 39CHECK: DW_AT_name ("argv") 40CHECK: DW_AT_type (0x0000006a 41CHECK: DW_AT_location (DW_OP_reg4 RSI) 42CHECK: NULL 43CHECK: DW_TAG_base_type 44CHECK: DW_AT_name ("int") 45CHECK: DW_AT_encoding (DW_ATE_signed) 46CHECK: DW_AT_byte_size (0x04) 47CHECK: DW_TAG_pointer_type 48CHECK: DW_AT_type (0x0000006f 49CHECK: DW_TAG_pointer_type 50CHECK: DW_AT_type (0x00000074 51CHECK: DW_TAG_const_type 52CHECK: DW_AT_type (0x00000079 53CHECK: DW_TAG_base_type 54CHECK: DW_AT_name ("char") 55CHECK: DW_AT_encoding (DW_ATE_signed_char) 56CHECK: DW_AT_byte_size (0x01) 57CHECK: NULL 58 59CHECK: Compile Unit: 60 61CHECK: DW_TAG_compile_unit 62CHECK: DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)") 63CHECK: DW_AT_name ("basic2.c") 64CHECK: DW_AT_stmt_list (0x0000003e) 65CHECK: DW_AT_comp_dir ("/Inputs") 66CHECK: DW_AT_low_pc (0x0000000100000f50) 67CHECK: DW_TAG_variable 68CHECK: DW_AT_name ("private_int") 69CHECK: DW_AT_type (0x0000000000000063 70CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c") 71CHECK: DW_AT_location (DW_OP_addr 0x100001008) 72CHECK: DW_TAG_variable 73CHECK: DW_AT_name ("baz") 74CHECK: DW_AT_type (0x0000000000000063 75CHECK: DW_AT_location (DW_OP_addr 0x100001000) 76CHECK: DW_TAG_subprogram 77CHECK: DW_AT_name ("foo") 78CHECK: DW_AT_type (0x0000000000000063 79CHECK: DW_AT_low_pc (0x0000000100000f50) 80CHECK: DW_AT_high_pc (0x0000000100000f89) 81CHECK: DW_AT_frame_base (DW_OP_reg6 RBP) 82CHECK: DW_TAG_formal_parameter 83CHECK: DW_AT_name ("arg") 84CHECK: DW_AT_type (0x0000000000000063 85CHECK: DW_AT_location (0x00000000 86CHECK: [0x0000000100000f50, 0x0000000100000f5e): DW_OP_reg5 RDI, DW_OP_piece 0x4) 87CHECK:[[INC1:0x[0-9a-f]*]]{{.*}}DW_TAG_inlined_subroutine 88CHECK: DW_AT_abstract_origin (0x00000128 "inc") 89CHECK: DW_AT_low_pc (0x0000000100000f63) 90CHECK: DW_AT_high_pc (0x0000000100000f72) 91CHECK: DW_AT_call_line (20) 92CHECK: NULL 93CHECK: DW_TAG_subprogram 94CHECK: DW_AT_name ("inc") 95CHECK: DW_AT_type (0x0000000000000063 96CHECK: DW_AT_inline (DW_INL_inlined) 97CHECK: NULL 98 99CHECK: Compile Unit: 100 101CHECK: DW_TAG_compile_unit 102CHECK: DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)") 103CHECK: DW_AT_name ("basic3.c") 104CHECK: DW_AT_stmt_list (0x0000007e) 105CHECK: DW_AT_comp_dir ("/Inputs") 106CHECK: DW_AT_low_pc (0x0000000100000f90) 107CHECK: DW_TAG_variable 108CHECK: DW_AT_name ("val") 109CHECK: DW_AT_type (0x00000176 110CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic3.c") 111CHECK: DW_AT_location (DW_OP_addr 0x100001004) 112CHECK: DW_TAG_volatile_type 113CHECK: DW_AT_type (0x0000000000000063 114CHECK: DW_TAG_subprogram 115CHECK: DW_AT_name ("bar") 116CHECK: DW_AT_type (0x0000000000000063 117CHECK: DW_AT_low_pc (0x0000000100000f90) 118CHECK: DW_AT_high_pc (0x0000000100000fb4) 119CHECK: DW_AT_frame_base (DW_OP_reg6 RBP) 120CHECK: DW_TAG_formal_parameter 121CHECK: DW_AT_name ("arg") 122CHECK: DW_AT_type (0x0000000000000063 123CHECK: DW_AT_location (0x00000025 124CHECK: [0x0000000100000f90, 0x0000000100000f9f): DW_OP_reg5 RDI, DW_OP_piece 0x4 125CHECK: [0x0000000100000fa9, 0x0000000100000fad): DW_OP_reg5 RDI, DW_OP_piece 0x4) 126CHECK: DW_TAG_lexical_block 127CHECK: DW_AT_low_pc (0x0000000100000f94) 128CHECK: DW_AT_high_pc (0x0000000100000fa7) 129CHECK:[[INC2:0x[0-9a-f]*]]{{.*}}DW_TAG_inlined_subroutine 130CHECK: DW_AT_abstract_origin (0x000001d4 "inc") 131CHECK: DW_AT_ranges (0x00000000 132CHECK: [0x0000000100000f94, 0x0000000100000f9a) 133CHECK: [0x0000000100000f9f, 0x0000000100000fa7)) 134CHECK: NULL 135CHECK: NULL 136CHECK: DW_TAG_subprogram 137CHECK: DW_AT_name ("inc") 138CHECK: DW_AT_type (0x0000000000000063 139CHECK: NULL 140 141CHECK: .debug_loc contents: 142CHECK-NEXT: 0x00000000: 143CHECK-NEXT: (0x0000000000000000, 0x000000000000000e): DW_OP_reg5 RDI, DW_OP_piece 0x4 144CHECK-NOT: : 145CHECK: 0x00000025: 146CHECK-NEXT: (0x0000000000000000, 0x000000000000000f): DW_OP_reg5 RDI, DW_OP_piece 0x4 147CHECK-NEXT: (0x0000000000000019, 0x000000000000001d): DW_OP_reg5 RDI, DW_OP_piece 0x4 148 149CHECK: .debug_aranges contents: 150CHECK-NEXT: Address Range Header: length = 0x0000002c, format = DWARF32, version = 0x0002, cu_offset = 0x00000000, addr_size = 0x08, seg_size = 0x00 151CHECK-NEXT: [0x0000000100000f40, 0x0000000100000f4b) 152CHECK-NEXT: Address Range Header: length = 0x0000002c, format = DWARF32, version = 0x0002, cu_offset = 0x00000081, addr_size = 0x08, seg_size = 0x00 153CHECK-NEXT: [0x0000000100000f50, 0x0000000100000f89) 154CHECK-NEXT: Address Range Header: length = 0x0000002c, format = DWARF32, version = 0x0002, cu_offset = 0x0000013a, addr_size = 0x08, seg_size = 0x00 155CHECK-NEXT: [0x0000000100000f90, 0x0000000100000fb4) 156 157 158CHECK: .debug_line contents 159CHECK: file_names[ 1]: 160CHECK-NEXT: name: "basic1.c" 161CHECK-NEXT: dir_index: 0 162CHECK: 0x0000000100000f40 23 0 1 0 0 0 is_stmt 163CHECK: 0x0000000100000f44 24 0 1 0 0 0 is_stmt prologue_end 164CHECK: 0x0000000100000f4b 24 0 1 0 0 0 is_stmt end_sequence 165 166CHECK: file_names[ 1]: 167CHECK-NEXT: name: "basic2.c" 168CHECK-NEXT: dir_index: 0 169CHECK: 0x0000000100000f50 19 0 1 0 0 0 is_stmt 170CHECK: 0x0000000100000f54 20 0 1 0 0 0 is_stmt prologue_end 171CHECK: 0x0000000100000f63 15 0 1 0 0 0 is_stmt 172CHECK: 0x0000000100000f72 20 0 1 0 0 0 is_stmt 173CHECK: 0x0000000100000f89 20 0 1 0 0 0 is_stmt end_sequence 174 175CHECK: file_names[ 1]: 176CHECK-NEXT: name: "basic3.c" 177CHECK-NEXT: dir_index: 0 178CHECK: 0x0000000100000f90 16 0 1 0 0 0 is_stmt 179CHECK: 0x0000000100000f94 12 0 1 0 0 0 is_stmt prologue_end 180CHECK: 0x0000000100000f9a 17 0 1 0 0 0 is_stmt 181CHECK: 0x0000000100000f9f 12 0 1 0 0 0 is_stmt 182CHECK: 0x0000000100000fa7 20 0 1 0 0 0 is_stmt 183CHECK: 0x0000000100000fa9 19 0 1 0 0 0 is_stmt 184CHECK: 0x0000000100000fb2 20 0 1 0 0 0 is_stmt 185CHECK: 0x0000000100000fb4 20 0 1 0 0 0 is_stmt end_sequence 186 187CHECK-NOT: .debug_pubnames contents: 188CHECK-NOT: .debug_pubtypes contents: 189 190CHECK: .apple_names contents: 191CHECK-NEXT: Header { 192CHECK-NEXT: Magic: 0x48415348 193CHECK-NEXT: Version: 0x1 194CHECK-NEXT: Hash function: 0x0 195CHECK-NEXT: Bucket count: 7 196CHECK-NEXT: Hashes count: 7 197CHECK-NEXT: HeaderData length: 12 198CHECK-NEXT: } 199CHECK-NEXT: DIE offset base: 0 200CHECK-NEXT: Number of atoms: 1 201CHECK-NEXT: Size of each hash data entry: 4 202CHECK-NEXT: Atoms [ 203CHECK-NEXT: Atom 0 { 204CHECK-NEXT: Type: DW_ATOM_die_offset 205CHECK-NEXT: Form: DW_FORM_data4 206CHECK-NEXT: } 207CHECK-NEXT: ] 208CHECK-NEXT: Bucket 0 [ 209CHECK-NEXT: Hash 0xb8860c2 [ 210CHECK-NEXT: Name@0x74 { 211CHECK-NEXT: String: 0x0000007e "baz" 212CHECK-NEXT: Data 0 [ 213CHECK-NEXT: Atom[0]: 0x000000c0 214CHECK-NEXT: ] 215CHECK-NEXT: } 216CHECK-NEXT: ] 217CHECK-NEXT: Hash 0xb88801f [ 218CHECK-NEXT: Name@0x84 { 219CHECK-NEXT: String: 0x0000008a "inc" 220CHECK-NEXT: Data 0 [ 221CHECK-NEXT: Atom[0]: 0x00000110 222CHECK-NEXT: ] 223CHECK-NEXT: Data 1 [ 224CHECK-NEXT: Atom[0]: 0x000001c7 225CHECK-NEXT: ] 226CHECK-NEXT: } 227CHECK-NEXT: ] 228CHECK-NEXT: ] 229CHECK-NEXT: Bucket 1 [ 230CHECK-NEXT: EMPTY 231CHECK-NEXT: ] 232CHECK-NEXT: Bucket 2 [ 233CHECK-NEXT: Hash 0xfed12c6a [ 234CHECK-NEXT: Name@0x98 { 235CHECK-NEXT: String: 0x00000072 "private_int" 236CHECK-NEXT: Data 0 [ 237CHECK-NEXT: Atom[0]: 0x000000a7 238CHECK-NEXT: ] 239CHECK-NEXT: } 240CHECK-NEXT: ] 241CHECK-NEXT: ] 242CHECK-NEXT: Bucket 3 [ 243CHECK-NEXT: Hash 0xb88b5c8 [ 244CHECK-NEXT: Name@0xa8 { 245CHECK-NEXT: String: 0x00000097 "val" 246CHECK-NEXT: Data 0 [ 247CHECK-NEXT: Atom[0]: 0x00000160 248CHECK-NEXT: ] 249CHECK-NEXT: } 250CHECK-NEXT: ] 251CHECK-NEXT: Hash 0x7c9a7f6a [ 252CHECK-NEXT: Name@0xb8 { 253CHECK-NEXT: String: 0x00000051 "main" 254CHECK-NEXT: Data 0 [ 255CHECK-NEXT: Atom[0]: 0x00000026 256CHECK-NEXT: ] 257CHECK-NEXT: } 258CHECK-NEXT: ] 259CHECK-NEXT: ] 260CHECK-NEXT: Bucket 4 [ 261CHECK-NEXT: EMPTY 262CHECK-NEXT: ] 263CHECK-NEXT: Bucket 5 [ 264CHECK-NEXT: Hash 0xb887389 [ 265CHECK-NEXT: Name@0xc8 { 266CHECK-NEXT: String: 0x00000082 "foo" 267CHECK-NEXT: Data 0 [ 268CHECK-NEXT: Atom[0]: 0x000000d9 269CHECK-NEXT: ] 270CHECK-NEXT: } 271CHECK-NEXT: ] 272CHECK-NEXT: ] 273CHECK-NEXT: Bucket 6 [ 274CHECK-NEXT: Hash 0xb8860ba [ 275CHECK-NEXT: Name@0xd8 { 276CHECK-NEXT: String: 0x0000009b "bar" 277CHECK-NEXT: Data 0 [ 278CHECK-NEXT: Atom[0]: 0x0000017f 279CHECK-NEXT: ] 280CHECK-NEXT: } 281CHECK-NEXT: ] 282CHECK-NEXT: ] 283 284CHECK: apple_types contents: 285CHECK-NEXT: Header { 286CHECK-NEXT: Magic: 0x48415348 287CHECK-NEXT: Version: 0x1 288CHECK-NEXT: Hash function: 0x0 289CHECK-NEXT: Bucket count: 2 290CHECK-NEXT: Hashes count: 2 291CHECK-NEXT: HeaderData length: 24 292CHECK-NEXT: } 293CHECK-NEXT: DIE offset base: 0 294CHECK-NEXT: Number of atoms: 4 295CHECK-NEXT: Size of each hash data entry: 11 296CHECK-NEXT: Atoms [ 297CHECK-NEXT: Atom 0 { 298CHECK-NEXT: Type: DW_ATOM_die_offset 299CHECK-NEXT: Form: DW_FORM_data4 300CHECK-NEXT: } 301CHECK-NEXT: Atom 1 { 302CHECK-NEXT: Type: DW_ATOM_die_tag 303CHECK-NEXT: Form: DW_FORM_data2 304CHECK-NEXT: } 305CHECK-NEXT: Atom 2 { 306CHECK-NEXT: Type: DW_ATOM_type_flags 307CHECK-NEXT: Form: DW_FORM_data1 308CHECK-NEXT: } 309CHECK-NEXT: Atom 3 { 310CHECK-NEXT: Type: DW_ATOM_qual_name_hash 311CHECK-NEXT: Form: DW_FORM_data4 312CHECK-NEXT: } 313CHECK-NEXT: ] 314CHECK-NEXT: Bucket 0 [ 315CHECK-NEXT: Hash 0xb888030 [ 316CHECK-NEXT: Name@0x44 { 317CHECK-NEXT: String: 0x00000060 "int" 318CHECK-NEXT: Data 0 [ 319CHECK-NEXT: Atom[0]: 0x00000063 320CHECK-NEXT: Atom[1]: 0x0024 321CHECK-NEXT: Atom[2]: 0x00 322CHECK-NEXT: Atom[3]: 0x0c3a28a4 323CHECK-NEXT: ] 324CHECK-NEXT: } 325CHECK-NEXT: ] 326CHECK-NEXT: ] 327CHECK-NEXT: Bucket 1 [ 328CHECK-NEXT: Hash 0x7c952063 [ 329CHECK-NEXT: Name@0x5b { 330CHECK-NEXT: String: 0x00000064 "char" 331CHECK-NEXT: Data 0 [ 332CHECK-NEXT: Atom[0]: 0x00000079 333CHECK-NEXT: Atom[1]: 0x0024 334CHECK-NEXT: Atom[2]: 0x00 335CHECK-NEXT: Atom[3]: 0x937bd757 336CHECK-NEXT: ] 337CHECK-NEXT: } 338CHECK-NEXT: ] 339CHECK-NEXT: ] 340 341CHECK: .apple_namespaces contents: 342CHECK-NEXT: Header { 343CHECK-NEXT: Magic: 0x48415348 344CHECK-NEXT: Version: 0x1 345CHECK-NEXT: Hash function: 0x0 346CHECK-NEXT: Bucket count: 1 347CHECK-NEXT: Hashes count: 0 348CHECK-NEXT: HeaderData length: 12 349CHECK-NEXT: } 350CHECK-NEXT: DIE offset base: 0 351CHECK-NEXT: Number of atoms: 1 352CHECK-NEXT: Size of each hash data entry: 4 353CHECK-NEXT: Atoms [ 354CHECK-NEXT: Atom 0 { 355CHECK-NEXT: Type: DW_ATOM_die_offset 356CHECK-NEXT: Form: DW_FORM_data4 357CHECK-NEXT: } 358CHECK-NEXT: ] 359CHECK-NEXT: Bucket 0 [ 360CHECK-NEXT: EMPTY 361CHECK-NEXT: ] 362 363CHECK: .apple_objc contents: 364CHECK-NEXT: Header { 365CHECK-NEXT: Magic: 0x48415348 366CHECK-NEXT: Version: 0x1 367CHECK-NEXT: Hash function: 0x0 368CHECK-NEXT: Bucket count: 1 369CHECK-NEXT: Hashes count: 0 370CHECK-NEXT: HeaderData length: 12 371CHECK-NEXT: } 372CHECK-NEXT: DIE offset base: 0 373CHECK-NEXT: Number of atoms: 1 374CHECK-NEXT: Size of each hash data entry: 4 375CHECK-NEXT: Atoms [ 376CHECK-NEXT: Atom 0 { 377CHECK-NEXT: Type: DW_ATOM_die_offset 378CHECK-NEXT: Form: DW_FORM_data4 379CHECK-NEXT: } 380CHECK-NEXT: ] 381CHECK-NEXT: Bucket 0 [ 382CHECK-NEXT: EMPTY 383CHECK-NEXT: ] 384