1RUN: dsymutil -f -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-lto-dw4.macho.x86_64 | llvm-dwarfdump -a - | FileCheck %s 2 3CHECK: file format Mach-O 64-bit x86-64 4 5CHECK: debug_info contents 6 7CHECK: Compile Unit: {{.*}} version = 0x0004 8CHECK: DW_TAG_compile_unit 9CHECK: DW_AT_producer ("clang version 3.7.0 ") 10CHECK: DW_AT_language (DW_LANG_C99) 11CHECK: DW_AT_name ("basic1.c") 12CHECK: DW_AT_stmt_list (0x00000000) 13CHECK: DW_AT_comp_dir ("/Inputs") 14CHECK: DW_AT_low_pc (0x0000000100000f40) 15CHECK: DW_AT_high_pc (0x0000000100000f4b) 16CHECK: DW_TAG_subprogram 17CHECK: DW_AT_low_pc (0x0000000100000f40) 18CHECK: DW_AT_high_pc (0x0000000100000f4b) 19CHECK: DW_AT_frame_base (DW_OP_reg6 RBP) 20CHECK: DW_AT_name ("main") 21CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c") 22CHECK: DW_AT_prototyped (true) 23CHECK: DW_AT_type (0x00000000000000a1 24CHECK: DW_AT_external (true) 25CHECK: DW_TAG_formal_parameter 26CHECK: DW_AT_location (DW_OP_reg5 RDI, DW_OP_piece 0x4) 27CHECK: DW_AT_name ("argc") 28CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c") 29CHECK: DW_AT_type (0x00000000000000a1 30CHECK: DW_TAG_formal_parameter 31CHECK: DW_AT_location (DW_OP_reg4 RSI) 32CHECK: DW_AT_name ("argv") 33CHECK: DW_AT_type (0x00000060 34CHECK: NULL 35CHECK: DW_TAG_pointer_type 36CHECK: DW_AT_type (0x00000065 37CHECK: DW_TAG_pointer_type 38CHECK: DW_TAG_const_type 39CHECK: DW_TAG_base_type 40CHECK: DW_AT_name ("char") 41CHECK: DW_AT_encoding (DW_ATE_signed_char) 42CHECK: DW_AT_byte_size (0x01) 43CHECK: NULL 44 45CHECK: Compile Unit:{{.*}} version = 0x0004 46 47CHECK: DW_TAG_compile_unit 48CHECK: DW_AT_producer ("clang version 3.7.0 ") 49CHECK: DW_AT_language (DW_LANG_C99) 50CHECK: DW_AT_name ("basic2.c") 51CHECK: DW_AT_stmt_list (0x00000044) 52CHECK: DW_AT_low_pc (0x0000000100000f50) 53CHECK: DW_AT_high_pc (0x0000000100000f87) 54CHECK: DW_TAG_base_type 55CHECK: DW_AT_name ("int") 56CHECK: DW_TAG_variable 57CHECK: DW_AT_name ("baz") 58CHECK: DW_AT_location (DW_OP_addr 0x100001000) 59CHECK: DW_TAG_variable 60CHECK: DW_AT_name ("private_int") 61CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c") 62CHECK: DW_AT_location (DW_OP_addr 0x100001008) 63CHECK: DW_TAG_subprogram 64CHECK: DW_AT_name ("inc") 65CHECK: DW_AT_type (0x000000a1 66CHECK: DW_AT_inline (DW_INL_inlined) 67CHECK: DW_TAG_subprogram 68CHECK: DW_AT_low_pc (0x0000000100000f50) 69CHECK: DW_AT_high_pc (0x0000000100000f87) 70CHECK: DW_AT_frame_base (DW_OP_reg6 RBP) 71CHECK: DW_AT_name ("foo") 72CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c") 73CHECK: DW_AT_prototyped (true) 74CHECK: DW_AT_type (0x000000a1 75CHECK: DW_TAG_formal_parameter 76CHECK: DW_AT_location (0x00000000 77CHECK: [0x0000000100000f50, 0x0000000100000f5c): DW_OP_reg5 RDI, DW_OP_piece 0x4) 78CHECK: DW_AT_name ("arg") 79CHECK: DW_AT_type (0x000000a1 80CHECK: DW_TAG_inlined_subroutine 81CHECK: DW_AT_abstract_origin (0x000000d2 "inc") 82CHECK: DW_AT_low_pc (0x0000000100000f61) 83CHECK: DW_AT_high_pc (0x0000000100000f70) 84CHECK: NULL 85CHECK: NULL 86 87CHECK: Compile Unit: {{.*}} version = 0x0004 88 89CHECK: DW_TAG_compile_unit 90CHECK: DW_AT_producer ("clang version 3.7.0 ") 91CHECK: DW_AT_name ("basic3.c") 92CHECK: DW_AT_stmt_list (0x0000009a) 93CHECK: DW_AT_low_pc (0x0000000100000f90) 94CHECK: DW_AT_high_pc (0x0000000100000fb4) 95CHECK: DW_TAG_variable 96CHECK: DW_AT_name ("val") 97CHECK: DW_AT_decl_file ("/Inputs{{[/\\]}}basic3.c") 98CHECK: DW_AT_location (DW_OP_addr 0x100001004) 99CHECK: DW_TAG_volatile_type 100CHECK: DW_TAG_subprogram 101CHECK: DW_AT_name ("inc") 102CHECK: DW_AT_inline (DW_INL_inlined) 103CHECK: DW_TAG_subprogram 104CHECK: DW_AT_low_pc (0x0000000100000f90) 105CHECK: DW_AT_high_pc (0x0000000100000fb4) 106CHECK: DW_AT_frame_base (DW_OP_reg6 RBP) 107CHECK: DW_AT_name ("bar") 108CHECK: DW_TAG_formal_parameter 109CHECK: DW_AT_location (0x00000025 110CHECK: [0x0000000100000f90, 0x0000000100000f9f): DW_OP_reg5 RDI, DW_OP_piece 0x4 111CHECK: [0x0000000100000fa9, 0x0000000100000fad): DW_OP_reg5 RDI, DW_OP_piece 0x4) 112CHECK: DW_AT_name ("arg") 113CHECK: DW_TAG_inlined_subroutine 114CHECK: DW_AT_abstract_origin (0x0000015f "inc") 115CHECK: DW_AT_ranges (0x00000000 116CHECK: [0x0000000100000f94, 0x0000000100000f9a) 117CHECK: [0x0000000100000f9f, 0x0000000100000fa7)) 118 119CHECK: NULL 120CHECK: NULL 121 122 123CHECK: .debug_loc contents: 124CHECK-NEXT: 0x00000000: 125CHECK-NEXT: (0x0000000000000000, 0x000000000000000c): DW_OP_reg5 RDI, DW_OP_piece 0x4 126CHECK-NOT: : 127CHECK: 0x00000025: 128CHECK-NEXT: (0x0000000000000000, 0x000000000000000f): DW_OP_reg5 RDI, DW_OP_piece 0x4 129CHECK-NEXT: (0x0000000000000019, 0x000000000000001d): DW_OP_reg5 RDI, DW_OP_piece 0x4 130 131 132CHECK: .debug_aranges contents: 133CHECK-NEXT: Address Range Header: length = 0x0000002c, format = DWARF32, version = 0x0002, cu_offset = 0x00000000, addr_size = 0x08, seg_size = 0x00 134CHECK-NEXT: [0x0000000100000f40, 0x0000000100000f4b) 135CHECK-NEXT: Address Range Header: length = 0x0000002c, format = DWARF32, version = 0x0002, cu_offset = 0x00000077, addr_size = 0x08, seg_size = 0x00 136CHECK-NEXT: [0x0000000100000f50, 0x0000000100000f87) 137CHECK-NEXT: Address Range Header: length = 0x0000002c, format = DWARF32, version = 0x0002, cu_offset = 0x0000011b, addr_size = 0x08, seg_size = 0x00 138CHECK-NEXT: [0x0000000100000f90, 0x0000000100000fb4) 139 140CHECK: .debug_line contents: 141CHECK: file_names[ 1]: 142CHECK-NEXT: name: "basic1.c" 143CHECK-NEXT: dir_index: 0 144CHECK: Address Line Column File ISA Discriminator Flags 145CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------------- 146CHECK-NEXT: 0x0000000100000f40 26 0 1 0 0 is_stmt 147CHECK-NEXT: 0x0000000100000f44 27 10 1 0 0 is_stmt prologue_end 148CHECK-NEXT: 0x0000000100000f49 27 3 1 0 0 149CHECK-NEXT: 0x0000000100000f4b 27 3 1 0 0 end_sequence 150 151CHECK: file_names[ 1]: 152CHECK-NEXT: name: "basic2.c" 153CHECK-NEXT: dir_index: 0 154CHECK: Address Line Column File ISA Discriminator Flags 155CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------------- 156CHECK-NEXT: 0x0000000100000f50 19 0 1 0 0 is_stmt 157CHECK-NEXT: 0x0000000100000f54 20 18 1 0 0 is_stmt prologue_end 158CHECK-NEXT: 0x0000000100000f5a 20 17 1 0 0 159CHECK-NEXT: 0x0000000100000f5c 20 10 1 0 0 160CHECK-NEXT: 0x0000000100000f61 15 10 1 0 0 is_stmt 161CHECK-NEXT: 0x0000000100000f70 20 23 1 0 0 is_stmt 162CHECK-NEXT: 0x0000000100000f74 20 36 1 0 0 163CHECK-NEXT: 0x0000000100000f83 20 31 1 0 0 164CHECK-NEXT: 0x0000000100000f85 20 3 1 0 0 165CHECK-NEXT: 0x0000000100000f87 20 3 1 0 0 end_sequence 166 167CHECK: file_names[ 1]: 168CHECK-NEXT: name: "basic3.c" 169CHECK-NEXT: dir_index: 0 170CHECK: Address Line Column File ISA Discriminator Flags 171CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------------- 172CHECK-NEXT: 0x0000000100000f90 16 0 1 0 0 is_stmt 173CHECK-NEXT: 0x0000000100000f94 12 10 1 0 0 is_stmt prologue_end 174CHECK-NEXT: 0x0000000100000f9a 17 7 1 0 0 is_stmt 175CHECK-NEXT: 0x0000000100000f9f 12 10 1 0 0 is_stmt 176CHECK-NEXT: 0x0000000100000fa7 20 1 1 0 0 is_stmt 177CHECK-NEXT: 0x0000000100000fa9 19 18 1 0 0 is_stmt 178CHECK-NEXT: 0x0000000100000fab 19 10 1 0 0 179CHECK-NEXT: 0x0000000100000fb2 20 1 1 0 0 is_stmt 180CHECK-NEXT: 0x0000000100000fb4 20 1 1 0 0 is_stmt end_sequence 181 182CHECK: .debug_pubnames contents: 183CHECK-NEXT: length = 0x00000017, format = DWARF32, version = 0x0002, unit_offset = 0x00000000, unit_size = 0x00000077 184CHECK-NEXT: Offset Name 185CHECK-NEXT: 0x0000002a "main" 186CHECK-NEXT: length = 0x0000002e, format = DWARF32, version = 0x0002, unit_offset = 0x00000077, unit_size = 0x000000a4 187CHECK-NEXT: Offset Name 188CHECK-NEXT: 0x00000031 "baz" 189CHECK-NEXT: 0x00000046 "private_int" 190CHECK-NEXT: 0x00000067 "foo" 191CHECK-NEXT: length = 0x0000001e, format = DWARF32, version = 0x0002, unit_offset = 0x0000011b, unit_size = 0x00000085 192CHECK-NEXT: Offset Name 193CHECK-NEXT: 0x0000002a "val" 194CHECK-NEXT: 0x00000050 "bar" 195 196CHECK: .debug_pubtypes contents: 197CHECK-NEXT: length = 0x00000017, format = DWARF32, version = 0x0002, unit_offset = 0x00000000, unit_size = 0x00000077 198CHECK-NEXT: Offset Name 199CHECK-NEXT: 0x0000006f "char" 200CHECK-NEXT: length = 0x00000016, format = DWARF32, version = 0x0002, unit_offset = 0x00000077, unit_size = 0x000000a4 201CHECK-NEXT: Offset Name 202CHECK-NEXT: 0x0000002a "int" 203