1e159abdbSAlexander Yermolovich# REQUIRES: system-linux 2e159abdbSAlexander Yermolovich 3e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-monolithic-main.s -o %tmain.o 4e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-monolithic-helper0.s -o %t0.o 5e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-monolithic-helper1.s -o %t1.o 6e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-monolithic-helper2.s -o %t2.o 7e159abdbSAlexander Yermolovich# RUN: %clang %cflags -dwarf-5 %tmain.o %t0.o %t1.o %t2.o -o %t.exe -Wl,-q 8*6aad62cfSSayhaan Siddiqui# RUN: llvm-bolt --always-convert-to-ranges %t.exe -o %t.bolt --update-debug-sections --debug-thread-count=4 --cu-processing-batch-size=4 9e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.exe | FileCheck --check-prefix=PRECHECK %s 10f292fff7SAmir Ayupov# RUN: llvm-dwarfdump --show-form --verbose --debug-line %t.exe > %t_line.txt 11e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-addr %t.bolt > %t.txt 12e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.bolt >> %t.txt 13e159abdbSAlexander Yermolovich# RUN: cat %t.txt | FileCheck --check-prefix=POSTCHECK %s 14f292fff7SAmir Ayupov# RUN: llvm-dwarfdump --show-form --verbose --debug-line %t.bolt >> %t_line.txt 15f292fff7SAmir Ayupov# RUN: FileCheck --check-prefix=CHECK-LINE %s --input-file %t_line.txt 16e159abdbSAlexander Yermolovich 17e159abdbSAlexander Yermolovich 1811791ae7SSayhaan Siddiqui## Check BOLT handles monolithic mix of DWARF4 and DWARF5. 19e159abdbSAlexander Yermolovich 20e159abdbSAlexander Yermolovich# main.cpp 21e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0005 22e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_compile_unit [1] * 23e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_producer [DW_FORM_strx1] (indexed (00000000) 24e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_language 25e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_name 26e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000008) 27e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) 28e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir 29e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc 30e159abdbSAlexander Yermolovich# PRECHECK: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) 31e159abdbSAlexander Yermolovich# PRECHECK-NEXT: [0x 32e159abdbSAlexander Yermolovich# PRECHECK-NEXT: [0x 33e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset] (0x00000008) 34e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_rnglists_base [DW_FORM_sec_offset] (0x0000000c) 35e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_loclists_base [DW_FORM_sec_offset] (0x0000000c) 36e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [2] * (0x0000000c) 37e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000000) 38e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4] 39e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [8] 40e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) 41e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4] 42e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_formal_parameter [9] 43e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) loclist = 0x00000018 44e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_formal_parameter [9] 45e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x1) loclist = 0x00000028 46e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable 47e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x2) loclist = 0x00000038 48e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_inlined_subroutine [12] 49e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_abstract_origin 50e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000014 51e159abdbSAlexander Yermolovich 52e159abdbSAlexander Yermolovich# helper0.cpp 53e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0004 54e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_compile_unit 55e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_producer 56e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_language 57e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_name 58e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list 59e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir 60e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] 61e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc 62e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [7] 63e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] 64e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc 65e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable [9] 66e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_sec_offset] (0x00000000: 67e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_inlined_subroutine [10] 68e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_abstract_origin 69e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] 70e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc 71e159abdbSAlexander Yermolovich 72e159abdbSAlexander Yermolovich# helper1.cpp 73e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0005 74e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_compile_unit [1] * 75e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_producer 76e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_language 77e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_name 78e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000058) 79e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list 80e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir 81e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) 82e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4] 83e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset] (0x00000038) 84e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_loclists_base [DW_FORM_sec_offset] (0x00000051) 85e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable [2] 86e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_name 87e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_type 88e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_external 89e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_decl_file 90e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_decl_line 91e159abdbSAlexander Yermolovich# PRECHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x0) 92e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [7] 93e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) 94e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4] 95e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable [9] 96e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) 97e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_inlined_subroutine [10] 98e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_abstract_origin 99e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) 100e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4] 101e159abdbSAlexander Yermolovich 102e159abdbSAlexander Yermolovich# helper2.cpp 103e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0004 104e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_compile_unit [1] * 105e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_producer 106e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_language 107e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_name 108e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list 109e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir 110e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] 111e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4] 112e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [7] 113e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] 114e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4] 115e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable [9] 116e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_sec_offset] 117e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_inlined_subroutine [10] 118e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_abstract_origin 119e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] 120e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc 121e159abdbSAlexander Yermolovich 122e159abdbSAlexander Yermolovich# Checking debug line. 123e159abdbSAlexander Yermolovich 124f292fff7SAmir Ayupov# CHECK-LINE: debug_line[ 125f292fff7SAmir Ayupov# CHECK-LINE: version: 5 126f292fff7SAmir Ayupov# CHECK-LINE: include_directories[ 0] = .debug_line_str[0x[[#%.8x,TEST_DEBUG_LINE:]]] = "/test" 127f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[ 0]: 128f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name: .debug_line_str[0x[[#%.8x,MAIN_DEBUG_LINE:]]] = "main.cpp" 129f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 0 130f292fff7SAmir Ayupov# CHECK-LINE-NEXT: md5_checksum: e3a18fae8565a087d09d6076b542cdab 131e159abdbSAlexander Yermolovich 132f292fff7SAmir Ayupov# CHECK-LINE: debug_line[ 133f292fff7SAmir Ayupov# CHECK-LINE: version: 4 134f292fff7SAmir Ayupov# CHECK-LINE: include_directories[ 1] = "/test" 135f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[ 1]: 136f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name: "helper0.cpp" 137f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 1 138f292fff7SAmir Ayupov# CHECK-LINE-NEXT: mod_time: 139f292fff7SAmir Ayupov# CHECK-LINE-NEXT: length: 140e159abdbSAlexander Yermolovich 141f292fff7SAmir Ayupov# CHECK-LINE: debug_line[ 142f292fff7SAmir Ayupov# CHECK-LINE: version: 5 143f292fff7SAmir Ayupov# CHECK-LINE: include_directories[ 0] = .debug_line_str[0x[[#TEST_DEBUG_LINE]]] = "/test" 144f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[ 0]: 145f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name: .debug_line_str[0x[[#%.8x,HELPER_DEBUG_LINE:]]] = "helper1.cpp" 146f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 0 147f292fff7SAmir Ayupov# CHECK-LINE-NEXT: md5_checksum: e6dbd773fdf80bfea332cdf8284cddce 148e159abdbSAlexander Yermolovich 149f292fff7SAmir Ayupov# CHECK-LINE: debug_line[ 150f292fff7SAmir Ayupov# CHECK-LINE: version: 4 151f292fff7SAmir Ayupov# CHECK-LINE: include_directories[ 1] = "/test" 152f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[ 1]: 153f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name: "helper2.cpp" 154f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 1 155f292fff7SAmir Ayupov# CHECK-LINE-NEXT: mod_time: 156f292fff7SAmir Ayupov# CHECK-LINE-NEXT: length: 157e159abdbSAlexander Yermolovich 158e159abdbSAlexander Yermolovich 159e159abdbSAlexander Yermolovich# POST BOLT. 160e159abdbSAlexander Yermolovich 161e159abdbSAlexander Yermolovich# POSTCHECK: Addrs: [ 162e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR:]] 163e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR1:]] 164e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR2:]] 165e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR3:]] 166e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR4:]] 167e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR5:]] 168e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR6:]] 169e159abdbSAlexander Yermolovich 170e159abdbSAlexander Yermolovich# POSTCHECK: Addrs: [ 171e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB:]] 172e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB1:]] 173e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB2:]] 174e159abdbSAlexander Yermolovich 175e159abdbSAlexander Yermolovich 176e159abdbSAlexander Yermolovich# main.cpp 177e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0005 178e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_compile_unit [1] * 179e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_producer [DW_FORM_strx1] (indexed (00000000) 180e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_language 181e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name 182e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000008) 183e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) 184e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir 185e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc 186e159abdbSAlexander Yermolovich# POSTCHECK: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) 187e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR]], 0x[[#ADDR + 0x7]] 188efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x51]] 189e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset] (0x00000008) 190e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_rnglists_base [DW_FORM_sec_offset] (0x0000000c) 191e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_loclists_base [DW_FORM_sec_offset] (0x0000000c) 192e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_subprogram [2] 193e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist 194e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR]], 0x[[#ADDR + 0x7]] 195e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_subprogram [8] 196e22ff52cSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x2) rangelist = 0x00000029 197efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x51]] 198e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_formal_parameter [9] 199e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) loclist = 0x00000018 200efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x22]] 201efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1 + 0x22]], 0x[[#ADDR1 + 0x51]] 202e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_formal_parameter [9] 203124ca880SAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x1) loclist = 0x00000028 204efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x27]] 205efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1 + 0x27]], 0x[[#ADDR1 + 0x51]] 206e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_variable 207124ca880SAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x2) loclist = 0x00000038 208efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR2]], 0x[[#ADDR2 + 0x6]] 209efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR2 + 0x6]], 0x[[#ADDR2 + 0x46]] 210e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_inlined_subroutine [12] 211e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_abstract_origin 212e22ff52cSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x3) rangelist = 0x0000002d 213efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR3]], 0x[[#ADDR3 + 0x4]] 214efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR3 + 0x10]], 0x[[#ADDR3 + 0x16]] 215e159abdbSAlexander Yermolovich 216e159abdbSAlexander Yermolovich# helper0.cpp 217e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0004 218e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_compile_unit 219e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_producer 220e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_language 221e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name 222e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list 223e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir 224e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) 225e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] 226e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 22787fb0ea2SRui Zhong# POSTCHECK: DW_TAG_subprogram [22] 228e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] 229e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 23087fb0ea2SRui Zhong# POSTCHECK: DW_TAG_variable [24] 231e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_sec_offset] 232e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 233e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 23487fb0ea2SRui Zhong# POSTCHECK: DW_TAG_inlined_subroutine [25] 235e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_abstract_origin 236e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] 237e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 238e159abdbSAlexander Yermolovich 239e159abdbSAlexander Yermolovich# helper1.cpp 240e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0005 24187fb0ea2SRui Zhong# POSTCHECK: DW_TAG_compile_unit [26] * 242e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_producer 243e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_language 244e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name 245e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000058) 246e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list 247e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir 248e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) 249e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) 250e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDRB]], 0x[[#ADDRB + 0x4]] 251e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset] 252e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_loclists_base [DW_FORM_sec_offset] 253e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_rnglists_base [DW_FORM_sec_offset] 25487fb0ea2SRui Zhong# POSTCHECK: DW_TAG_variable [27] 255e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name 256e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_type 257e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_external 258e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_decl_file 259e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_decl_line 260e159abdbSAlexander Yermolovich# POSTCHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x2) 26187fb0ea2SRui Zhong# POSTCHECK: DW_TAG_subprogram [29] 262e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) 263e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDRB]], 0x[[#ADDRB + 0x4]] 26487fb0ea2SRui Zhong# POSTCHECK: DW_TAG_variable [10] 265e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) 266e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDRB]], 0x[[#ADDRB + 0x3]] 267124ca880SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDRB + 0x3]], 0x[[#ADDRB + 0x4]] 268efb8a1c9SAlexander Yermolovich# POSTCHECK: DW_TAG_inlined_subroutine 269e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_abstract_origin 270e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x2) rangelist 271e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDRB]], 0x[[#ADDRB + 0x3]] 272e159abdbSAlexander Yermolovich 273e159abdbSAlexander Yermolovich# helper2.cpp 274e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0004 27587fb0ea2SRui Zhong# POSTCHECK: DW_TAG_compile_unit [17] * 276e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_producer 277e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_language 278e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name 279e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list 280e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir 281e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) 282e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] 283e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 28487fb0ea2SRui Zhong# POSTCHECK: DW_TAG_subprogram [22] 285e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] 286e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 28787fb0ea2SRui Zhong# POSTCHECK: DW_TAG_variable [24] 288e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_sec_offset] 289e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 290e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 29187fb0ea2SRui Zhong# POSTCHECK: DW_TAG_inlined_subroutine [25] 292e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_abstract_origin 293e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] 294e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 295e159abdbSAlexander Yermolovich 296e159abdbSAlexander Yermolovich 297e159abdbSAlexander Yermolovich# Checking debug line. 298e159abdbSAlexander Yermolovich 299f292fff7SAmir Ayupov# CHECK-LINE: debug_line[ 300f292fff7SAmir Ayupov# CHECK-LINE: version: 5 301f292fff7SAmir Ayupov# CHECK-LINE: include_directories[ 0] = .debug_line_str[0x[[#TEST_DEBUG_LINE]]] = "/test" 302f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[ 0]: 303f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name: .debug_line_str[0x[[#MAIN_DEBUG_LINE]]] = "main.cpp" 304f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 0 305f292fff7SAmir Ayupov# CHECK-LINE-NEXT: md5_checksum: e3a18fae8565a087d09d6076b542cdab 306e159abdbSAlexander Yermolovich 307f292fff7SAmir Ayupov# CHECK-LINE: debug_line[ 308f292fff7SAmir Ayupov# CHECK-LINE: version: 4 309f292fff7SAmir Ayupov# CHECK-LINE: include_directories[ 1] = "/test" 310f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[ 1]: 311f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name: "helper0.cpp" 312f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 1 313f292fff7SAmir Ayupov# CHECK-LINE-NEXT: mod_time: 314f292fff7SAmir Ayupov# CHECK-LINE-NEXT: length: 315e159abdbSAlexander Yermolovich 316f292fff7SAmir Ayupov# CHECK-LINE: debug_line[ 317f292fff7SAmir Ayupov# CHECK-LINE: version: 5 318f292fff7SAmir Ayupov# CHECK-LINE: include_directories[ 0] = .debug_line_str[0x[[#TEST_DEBUG_LINE]]] = "/test" 319f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[ 0]: 320f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name: .debug_line_str[0x[[#HELPER_DEBUG_LINE]]] = "helper1.cpp" 321f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 0 322f292fff7SAmir Ayupov# CHECK-LINE-NEXT: md5_checksum: e6dbd773fdf80bfea332cdf8284cddce 323e159abdbSAlexander Yermolovich 324f292fff7SAmir Ayupov# CHECK-LINE: debug_line[ 325f292fff7SAmir Ayupov# CHECK-LINE: version: 4 326f292fff7SAmir Ayupov# CHECK-LINE: include_directories[ 1] = "/test" 327f292fff7SAmir Ayupov# CHECK-LINE-NEXT: file_names[ 1]: 328f292fff7SAmir Ayupov# CHECK-LINE-NEXT: name: "helper2.cpp" 329f292fff7SAmir Ayupov# CHECK-LINE-NEXT: dir_index: 1 330f292fff7SAmir Ayupov# CHECK-LINE-NEXT: mod_time: 331f292fff7SAmir Ayupov# CHECK-LINE-NEXT: length: 332