130 lines · plain
1## This test checks that DW_OP_addrx expression operand2## is correctly recognized and converted into the DW_OP_addr3## operand or just preserved in case --update.4 5## cat dwarf5-dw-op-addrx.c6 7## char arr[40];8## char arr2[40];9## char arr3[40];10## char arr4[40];11## char arr5[40];12## char arr6[40];13## char arr7[40];14## char arr8[40];15## char arr9[40];16## int main() { return 0;}17 18## $ clang -gdwarf-5 dwarf5-dw-op-addrx.c -c -O2 -o dwarf5-dw-op-addrx.o19 20#RUN: dsymutil -oso-prepend-path %p/../Inputs -y %s -o %t.dSYM21#RUN: llvm-dwarfdump --verify %t.dSYM | FileCheck %s22#RUN: llvm-dwarfdump -a --verbose %t.dSYM | FileCheck %s --check-prefix DWARF-CHECK23 24#RUN: dsymutil --update -oso-prepend-path %p/../Inputs -y %s -o %t.dSYM25#RUN: llvm-dwarfdump --verify %t.dSYM | FileCheck %s26#RUN: llvm-dwarfdump -a --verbose %t.dSYM | FileCheck %s --check-prefix UPD-DWARF-CHECK27 28#RUN: dsymutil --linker parallel -oso-prepend-path %p/../Inputs -y %s -o %t.dSYM29#RUN: llvm-dwarfdump --verify %t.dSYM | FileCheck %s30#RUN: llvm-dwarfdump -a --verbose %t.dSYM | FileCheck %s --check-prefix DWARF-CHECK31 32#RUN: dsymutil --linker parallel --update -oso-prepend-path %p/../Inputs -y %s -o %t.dSYM33#RUN: llvm-dwarfdump --verify %t.dSYM | FileCheck %s34#RUN: llvm-dwarfdump -a --verbose %t.dSYM | FileCheck %s --check-prefix UPD-DWARF-CHECK35 36#CHECK: No errors.37 38#DWARF-CHECK: DW_TAG_compile_unit39#DWARF-CHECK: DW_AT_name {{.*}}"dwarf5-dw-op-addrx.c"40#DWARF-CHECK: DW_AT_low_pc {{.*}}0x0000000100000fb041#DWARF-CHECK: DW_TAG_variable42#DWARF-CHECK: DW_AT_name {{.*}}"arr"43#DWARF-CHECK: DW_AT_location {{.*}}(DW_OP_addr 0x100001000)44#DWARF-CHECK: DW_TAG_variable45#DWARF-CHECK: DW_AT_name {{.*}}"arr2"46#DWARF-CHECK: DW_AT_location {{.*}}(DW_OP_addr 0x100002000)47#DWARF-CHECK: DW_TAG_variable48#DWARF-CHECK: DW_AT_name {{.*}}"arr3"49#DWARF-CHECK: DW_AT_location {{.*}}(DW_OP_addr 0x100003000)50#DWARF-CHECK: DW_TAG_variable51#DWARF-CHECK: DW_AT_name {{.*}}"arr4"52#DWARF-CHECK: DW_AT_location {{.*}}(DW_OP_addr 0x100004000)53#DWARF-CHECK: DW_TAG_variable54#DWARF-CHECK: DW_AT_name {{.*}}"arr5"55#DWARF-CHECK: DW_AT_location {{.*}}(DW_OP_addr 0x100005000)56#DWARF-CHECK: DW_TAG_variable57#DWARF-CHECK: DW_AT_name {{.*}}"arr6"58#DWARF-CHECK: DW_AT_location {{.*}}(DW_OP_addr 0x100006000)59#DWARF-CHECK: DW_TAG_variable60#DWARF-CHECK: DW_AT_name {{.*}}"arr7"61#DWARF-CHECK: DW_AT_location {{.*}}(DW_OP_addr 0x100007000)62#DWARF-CHECK: DW_TAG_variable63#DWARF-CHECK: DW_AT_name {{.*}}"arr8"64#DWARF-CHECK: DW_AT_location {{.*}}(DW_OP_addr 0x100008000)65#DWARF-CHECK: DW_TAG_variable66#DWARF-CHECK: DW_AT_name {{.*}}"arr9"67#DWARF-CHECK: DW_AT_location {{.*}}(DW_OP_addr 0x100009000)68 69#UPD-DWARF-CHECK: DW_TAG_compile_unit70#UPD-DWARF-CHECK: DW_AT_name {{.*}}"dwarf5-dw-op-addrx.c"71#UPD-DWARF-CHECK: DW_AT_low_pc [DW_FORM_addrx] (indexed (00000009) address = 0x0000000000000000)72#UPD-DWARF-CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000008)73#UPD-DWARF-CHECK: DW_AT_addr_base [DW_FORM_sec_offset] (0x00000008)74#UPD-DWARF-CHECK: DW_TAG_variable75#UPD-DWARF-CHECK: DW_AT_name {{.*}}"arr"76#UPD-DWARF-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x0)77#UPD-DWARF-CHECK: DW_TAG_variable78#UPD-DWARF-CHECK: DW_AT_name {{.*}}"arr2"79#UPD-DWARF-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x1)80#UPD-DWARF-CHECK: DW_TAG_variable81#UPD-DWARF-CHECK: DW_AT_name {{.*}}"arr3"82#UPD-DWARF-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x2)83#UPD-DWARF-CHECK: DW_TAG_variable84#UPD-DWARF-CHECK: DW_AT_name {{.*}}"arr4"85#UPD-DWARF-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x3)86#UPD-DWARF-CHECK: DW_TAG_variable87#UPD-DWARF-CHECK: DW_AT_name {{.*}}"arr5"88#UPD-DWARF-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x4)89#UPD-DWARF-CHECK: DW_TAG_variable90#UPD-DWARF-CHECK: DW_AT_name {{.*}}"arr6"91#UPD-DWARF-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x5)92#UPD-DWARF-CHECK: DW_TAG_variable93#UPD-DWARF-CHECK: DW_AT_name {{.*}}"arr7"94#UPD-DWARF-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x6)95#UPD-DWARF-CHECK: DW_TAG_variable96#UPD-DWARF-CHECK: DW_AT_name {{.*}}"arr8"97#UPD-DWARF-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x7)98#UPD-DWARF-CHECK: DW_TAG_variable99#UPD-DWARF-CHECK: DW_AT_name {{.*}}"arr9"100#UPD-DWARF-CHECK: DW_AT_location [DW_FORM_exprloc] (DW_OP_addrx 0x8)101#UPD-DWARF-CHECK: .debug_addr contents:102#UPD-DWARF-CHECK: 0x00000000: Address table header: length = 0x00000054, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00103#UPD-DWARF-CHECK: 0x0000000000000000104#UPD-DWARF-CHECK: 0x0000000000000000105#UPD-DWARF-CHECK: 0x0000000000000000106#UPD-DWARF-CHECK: 0x0000000000000000107#UPD-DWARF-CHECK: 0x0000000000000000108#UPD-DWARF-CHECK: 0x0000000000000000109#UPD-DWARF-CHECK: 0x0000000000000000110#UPD-DWARF-CHECK: 0x0000000000000000111#UPD-DWARF-CHECK: 0x0000000000000000112#UPD-DWARF-CHECK: 0x0000000000000000113 114---115triple: 'x86_64-apple-darwin'116objects:117 - filename: 'dwarf5-dw-op-addrx.o'118 timestamp: 1676048242119 symbols:120 - { sym: _main, objAddr: 0x0000000000000000, binAddr: 0x0000000100000FB0, size: 0x00000008 }121 - { sym: _arr, binAddr: 0x0000000100001000, size: 0x00000008 }122 - { sym: _arr2, binAddr: 0x0000000100002000, size: 0x00000008 }123 - { sym: _arr3, binAddr: 0x0000000100003000, size: 0x00000008 }124 - { sym: _arr4, binAddr: 0x0000000100004000, size: 0x00000008 }125 - { sym: _arr5, binAddr: 0x0000000100005000, size: 0x00000008 }126 - { sym: _arr6, binAddr: 0x0000000100006000, size: 0x00000008 }127 - { sym: _arr7, binAddr: 0x0000000100007000, size: 0x00000008 }128 - { sym: _arr8, binAddr: 0x0000000100008000, size: 0x00000008 }129 - { sym: _arr9, binAddr: 0x0000000100009000, size: 0x00000008 }130