1e159abdbSAlexander Yermolovich# REQUIRES: system-linux 2e159abdbSAlexander Yermolovich 3e159abdbSAlexander Yermolovich; RUN: rm -rf %t 4e159abdbSAlexander Yermolovich; RUN: mkdir %t 5e159abdbSAlexander Yermolovich; RUN: cd %t 6e159abdbSAlexander Yermolovich 7e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux -split-dwarf-file=main.dwo %p/Inputs/dwarf5-split-dwarf4-monolithic-main.s -o main.o 8e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-monolithic-helper0.s -o helper0.o 9e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=5 -filetype=obj -triple x86_64-unknown-linux -split-dwarf-file=helper1.dwo %p/Inputs/dwarf5-split-dwarf4-monolithic-helper1.s -o helper1.o 10e159abdbSAlexander Yermolovich# RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %p/Inputs/dwarf5-dwarf4-monolithic-helper2.s -o helper2.o 11e159abdbSAlexander Yermolovich# RUN: %clang %cflags -dwarf-5 main.o helper0.o helper1.o helper2.o -o main.exe -Wl,-q 12*6aad62cfSSayhaan Siddiqui# RUN: llvm-bolt --always-convert-to-ranges main.exe -o main.bolt --update-debug-sections --debug-thread-count=4 --cu-processing-batch-size=4 13e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info main.exe | FileCheck --check-prefix=PRECHECK %s 14e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-line main.exe | FileCheck --check-prefix=PRECHECK-LINE %s 15e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-addr main.bolt > boltout.txt 16e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info main.bolt >> boltout.txt 17e159abdbSAlexander Yermolovich# RUN: cat boltout.txt | FileCheck --check-prefix=POSTCHECK %s 18e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info main.dwo.dwo | FileCheck --check-prefix=POSTCHECK-DWO-MAIN %s 19e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info helper1.dwo.dwo | FileCheck --check-prefix=POSTCHECK-DWO-HELPER1 %s 20e159abdbSAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-line main.bolt | FileCheck --check-prefix=POSTCHECK-LINE %s 21e159abdbSAlexander Yermolovich 22e159abdbSAlexander Yermolovich 2311791ae7SSayhaan Siddiqui## Check BOLT handles monolithic mix of DWARF4 and DWARF5. 24e159abdbSAlexander Yermolovich 25e159abdbSAlexander Yermolovich# main.cpp 26e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0005 27e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_skeleton_unit 28e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list 29e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_str_offsets_base 30e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir 31e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_GNU_pubnames [DW_FORM_flag_present] (true) 32e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_dwo_name [DW_FORM_strx1] (indexed (00000001) string = "main.dwo") 33e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc 34e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000010 35e159abdbSAlexander Yermolovich# PRECHECK-NEXT: [0x 36e159abdbSAlexander Yermolovich# PRECHECK-NEXT: [0x 37e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_addr_base 38e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_rnglists_base 39e159abdbSAlexander Yermolovich 40e159abdbSAlexander Yermolovich# helper0.cpp 41e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0004 42e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_compile_unit 43e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_producer 44e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_language 45e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_name 46e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list 47e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir 48e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] 49e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc 50e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [7] 51e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] 52e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc 53e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable [9] 54e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_sec_offset] (0x00000000: 55e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_inlined_subroutine [10] 56e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_abstract_origin 57e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] 58e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc 59e159abdbSAlexander Yermolovich 60e159abdbSAlexander Yermolovich# helper1.cpp 61e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0005 62e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_skeleton_unit [1] 63e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_stmt_list 64e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_str_offsets_base 65e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir 66e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_GNU_pubnames 67e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_dwo_name [DW_FORM_strx1] (indexed (00000001) string = "helper1.dwo") 68e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) address 69e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4] 70e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_addr_base 71e159abdbSAlexander Yermolovich 72e159abdbSAlexander Yermolovich# helper2.cpp 73e159abdbSAlexander Yermolovich# PRECHECK: version = 0x0004 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_stmt_list 79e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_comp_dir 80e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] 81e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4] 82e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_subprogram [7] 83e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] 84e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc [DW_FORM_data4] 85e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_variable [9] 86e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_location [DW_FORM_sec_offset] 87e159abdbSAlexander Yermolovich# PRECHECK: DW_TAG_inlined_subroutine [10] 88e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_abstract_origin 89e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] 90e159abdbSAlexander Yermolovich# PRECHECK-NEXT: DW_AT_high_pc 91e159abdbSAlexander Yermolovich 9211791ae7SSayhaan Siddiqui## Checking debug line. 93e159abdbSAlexander Yermolovich 94e159abdbSAlexander Yermolovich# PRECHECK-LINE: debug_line[ 95e159abdbSAlexander Yermolovich# PRECHECK-LINE: version: 5 96e159abdbSAlexander Yermolovich# PRECHECK-LINE: include_directories[ 0] = .debug_line_str[0x[[#%.8x,LINE:]]] = "." 97e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: file_names[ 0]: 98e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: name: .debug_line_str[0x[[#%.8x,LINE:]]] = "main.cpp" 99e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: dir_index: 0 100e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: md5_checksum: e3a18fae8565a087d09d6076b542cdab 101e159abdbSAlexander Yermolovich 102e159abdbSAlexander Yermolovich# PRECHECK-LINE: debug_line[ 103e159abdbSAlexander Yermolovich# PRECHECK-LINE: version: 4 104e159abdbSAlexander Yermolovich# PRECHECK-LINE: include_directories[ 1] = "/test" 105e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: file_names[ 1]: 106e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: name: "helper0.cpp" 107e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: dir_index: 1 108e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: mod_time: 109e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: length: 110e159abdbSAlexander Yermolovich 111e159abdbSAlexander Yermolovich# PRECHECK-LINE: debug_line[ 112e159abdbSAlexander Yermolovich# PRECHECK-LINE: version: 5 113e159abdbSAlexander Yermolovich# PRECHECK-LINE: include_directories[ 0] = .debug_line_str[0x[[#%.8x,LINE:]]] = "." 114e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: file_names[ 0]: 115e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: name: .debug_line_str[0x[[#%.8x,LINE:]]] = "helper1.cpp" 116e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: dir_index: 0 117e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: md5_checksum: e6dbd773fdf80bfea332cdf8284cddce 118e159abdbSAlexander Yermolovich 119e159abdbSAlexander Yermolovich 120e159abdbSAlexander Yermolovich# PRECHECK-LINE: debug_line[ 121e159abdbSAlexander Yermolovich# PRECHECK-LINE: version: 4 122e159abdbSAlexander Yermolovich# PRECHECK-LINE: include_directories[ 1] = "/test" 123e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: file_names[ 1]: 124e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: name: "helper2.cpp" 125e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: dir_index: 1 126e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: mod_time: 127e159abdbSAlexander Yermolovich# PRECHECK-LINE-NEXT: length: 128e159abdbSAlexander Yermolovich 129e159abdbSAlexander Yermolovich 130e159abdbSAlexander Yermolovich# POST BOLT. 131e159abdbSAlexander Yermolovich 132e159abdbSAlexander Yermolovich# POSTCHECK: Addrs: [ 133e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR:]] 134e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR1:]] 135e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR2:]] 136e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR3:]] 137e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR4:]] 138e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR5:]] 139e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDR6:]] 140e159abdbSAlexander Yermolovich 141e159abdbSAlexander Yermolovich# POSTCHECK: Addrs: [ 142e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB:]] 143e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB1:]] 144e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: 0x[[#%.16x,ADDRB2:]] 145e159abdbSAlexander Yermolovich 146e159abdbSAlexander Yermolovich 147e159abdbSAlexander Yermolovich# main.cpp 148e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0005 149e159abdbSAlexander Yermolovich# POSTCHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) 150e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000008) 151e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir [DW_FORM_strx1] (indexed (00000000) string = ".") 152e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_GNU_pubnames [DW_FORM_flag_present] (true) 153e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_dwo_name [DW_FORM_strx1] (indexed (00000001) string = "main.dwo.dwo") 154e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc 155e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) 156e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR]], 0x[[#ADDR + 0x7]] 157efb8a1c9SAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDR1]], 0x[[#ADDR1 + 0x51]] 158e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset] 159e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_rnglists_base [DW_FORM_sec_offset] 160e159abdbSAlexander Yermolovich 161e159abdbSAlexander Yermolovich# helper0.cpp 162e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0004 163e159abdbSAlexander Yermolovich# POSTCHECK: DW_TAG_compile_unit 164e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_producer 165e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_language 166e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name 167e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list 168e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir 169e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) 170e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] 171e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 17287fb0ea2SRui Zhong# POSTCHECK: DW_TAG_subprogram [8] 173e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] 174e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 17587fb0ea2SRui Zhong# POSTCHECK: DW_TAG_variable [10] 176e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_sec_offset] 177e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 178e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 17987fb0ea2SRui Zhong# POSTCHECK: DW_TAG_inlined_subroutine [11] 180e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_abstract_origin 181e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] 182e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 183e159abdbSAlexander Yermolovich 184e159abdbSAlexander Yermolovich# helper1.cpp 185e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0005 18687fb0ea2SRui Zhong# POSTCHECK: DW_TAG_skeleton_unit [12] 187e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list [DW_FORM_sec_offset] (0x000000fe) 188e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x00000018) 189e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir [DW_FORM_strx1] (indexed (00000000) string = ".") 190e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_GNU_pubnames [DW_FORM_flag_present] (true) 191e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_dwo_name [DW_FORM_strx1] (indexed (00000001) string = "helper1.dwo.dwo") 192e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000002) 193e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) 194e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x[[#ADDRB1]], 0x[[#ADDRB1 + 0x4]] 195e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_addr_base [DW_FORM_sec_offset] 196e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_rnglists_base [DW_FORM_sec_offset] 197e159abdbSAlexander Yermolovich 198e159abdbSAlexander Yermolovich# helper2.cpp 199e159abdbSAlexander Yermolovich# POSTCHECK: version = 0x0004 20087fb0ea2SRui Zhong# POSTCHECK: DW_TAG_compile_unit [2] * 201e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_producer 202e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_language 203e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_name 204e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_stmt_list 205e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_comp_dir 206e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) 207e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] 208e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 20987fb0ea2SRui Zhong# POSTCHECK: DW_TAG_subprogram [8] 210e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] 211e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 21287fb0ea2SRui Zhong# POSTCHECK: DW_TAG_variable [10] 213e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_location [DW_FORM_sec_offset] 214e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 215e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 21687fb0ea2SRui Zhong# POSTCHECK: DW_TAG_inlined_subroutine [11] 217e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_abstract_origin 218e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: DW_AT_ranges [DW_FORM_sec_offset] 219e159abdbSAlexander Yermolovich# POSTCHECK-NEXT: [0x 220e159abdbSAlexander Yermolovich 221e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: version = 0x0005 222e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_compile_unit 223e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_subprogram [2] 224e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000018 225e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000000, 0x0000000000000007)) 226e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_subprogram [8] 227e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x0000001c 228e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000000, 0x0000000000000051)) 229e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_formal_parameter [9] 230e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) loclist = 0x00000018: 231efb8a1c9SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_base_addressx (0x0000000000000001) 232124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair (0x0000000000000000, 0x0000000000000022): DW_OP_reg5 RDI 233124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair (0x0000000000000022, 0x0000000000000051): DW_OP_entry_value(DW_OP_reg5 RDI), DW_OP_stack_value) 234e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_formal_parameter [9] 235124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x1) loclist = 0x00000028: 236efb8a1c9SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_base_addressx (0x0000000000000001) 237124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair (0x0000000000000000, 0x0000000000000027): DW_OP_reg4 RSI 238124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair (0x0000000000000027, 0x0000000000000051): DW_OP_entry_value(DW_OP_reg4 RSI), DW_OP_stack_value) 239e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_variable [10] 240124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x2) loclist = 0x00000038: 241efb8a1c9SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_base_addressx (0x0000000000000002) 242124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair (0x0000000000000000, 0x0000000000000006): DW_OP_reg5 RDI 243124ca880SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_LLE_offset_pair (0x0000000000000006, 0x0000000000000046): DW_OP_reg14 R14) 244e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN: DW_TAG_inlined_subroutine [12] 245e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_abstract_origin [DW_FORM_ref4] 246e159abdbSAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x2) rangelist = 0x00000020 2471a2f8336Sspaette# Encoded as a pair. So it's offset from base address. 248efb8a1c9SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000003, 0x0000000000000007) 249efb8a1c9SAlexander Yermolovich# POSTCHECK-DWO-MAIN-NEXT: [0x0000000000000013, 0x0000000000000019)) 250e159abdbSAlexander Yermolovich 251e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1: version = 0x0005 252e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1: DW_TAG_subprogram [7] 253e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x0) rangelist = 0x00000014 254e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: [0x0000000000000000, 0x0000000000000004)) 255e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1: DW_TAG_variable [9] 256e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_location [DW_FORM_loclistx] (indexed (0x0) loclist = 0x00000010: 257124ca880SAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_LLE_base_addressx (0x0000000000000001) 258124ca880SAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_LLE_offset_pair (0x0000000000000000, 0x0000000000000003): DW_OP_reg5 RDI 259124ca880SAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_LLE_offset_pair (0x0000000000000003, 0x0000000000000004): DW_OP_reg0 RAX) 260e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1: DW_TAG_inlined_subroutine [10] 261e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_abstract_origin 262e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: DW_AT_ranges [DW_FORM_rnglistx] (indexed (0x1) rangelist = 0x00000018 263e159abdbSAlexander Yermolovich# POSTCHECK-DWO-HELPER1-NEXT: [0x0000000000000000, 0x0000000000000003)) 264e159abdbSAlexander Yermolovich 26511791ae7SSayhaan Siddiqui## Checking debug line. 266e159abdbSAlexander Yermolovich 267e159abdbSAlexander Yermolovich# POSTCHECK-LINE: debug_line[ 268e159abdbSAlexander Yermolovich# POSTCHECK-LINE: version: 5 269e159abdbSAlexander Yermolovich# POSTCHECK-LINE: include_directories[ 0] = .debug_line_str[0x[[#%.8x,LINE:]]] = "." 270e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: file_names[ 0]: 271e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: name: .debug_line_str[0x[[#%.8x,LINE:]]] = "main.cpp" 272e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: dir_index: 0 273e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: md5_checksum: e3a18fae8565a087d09d6076b542cdab 274e159abdbSAlexander Yermolovich 275e159abdbSAlexander Yermolovich# POSTCHECK-LINE: debug_line[ 276e159abdbSAlexander Yermolovich# POSTCHECK-LINE: version: 4 277e159abdbSAlexander Yermolovich# POSTCHECK-LINE: include_directories[ 1] = "/test" 278e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: file_names[ 1]: 279e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: name: "helper0.cpp" 280e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: dir_index: 1 281e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: mod_time: 282e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: length: 283e159abdbSAlexander Yermolovich 284e159abdbSAlexander Yermolovich# POSTCHECK-LINE: debug_line[ 285e159abdbSAlexander Yermolovich# POSTCHECK-LINE: version: 5 286e159abdbSAlexander Yermolovich# POSTCHECK-LINE: include_directories[ 0] = .debug_line_str[0x[[#%.8x,LINE:]]] = "." 287e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: file_names[ 0]: 288e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: name: .debug_line_str[0x[[#%.8x,LINE:]]] = "helper1.cpp" 289e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: dir_index: 0 290e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: md5_checksum: e6dbd773fdf80bfea332cdf8284cddce 291e159abdbSAlexander Yermolovich 292e159abdbSAlexander Yermolovich# POSTCHECK-LINE: debug_line[ 293e159abdbSAlexander Yermolovich# POSTCHECK-LINE: version: 4 294e159abdbSAlexander Yermolovich# POSTCHECK-LINE: include_directories[ 1] = "/test" 295e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: file_names[ 1]: 296e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: name: "helper2.cpp" 297e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: dir_index: 1 298e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: mod_time: 299e159abdbSAlexander Yermolovich# POSTCHECK-LINE-NEXT: length: 300