xref: /llvm-project/llvm/test/tools/dsymutil/X86/dwarf5-dw-op-addrx.test (revision f1fdfe6888f93b9f6dfb4689e1f3206de584ff5b)
1## This test checks that DW_OP_addrx expression operand
2## is correctly recognized and converted into the DW_OP_addr
3## operand or just preserved in case --update.
4
5## cat dwarf5-dw-op-addrx.c
6
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.o
19
20#RUN: dsymutil -oso-prepend-path %p/../Inputs -y %s -o %t.dSYM
21#RUN: llvm-dwarfdump --verify  %t.dSYM | FileCheck %s
22#RUN: llvm-dwarfdump -a --verbose  %t.dSYM | FileCheck %s --check-prefix DWARF-CHECK
23
24#RUN: dsymutil --update -oso-prepend-path %p/../Inputs -y %s -o %t.dSYM
25#RUN: llvm-dwarfdump --verify  %t.dSYM | FileCheck %s
26#RUN: llvm-dwarfdump -a --verbose  %t.dSYM | FileCheck %s --check-prefix UPD-DWARF-CHECK
27
28#RUN: dsymutil --linker parallel -oso-prepend-path %p/../Inputs -y %s -o %t.dSYM
29#RUN: llvm-dwarfdump --verify  %t.dSYM | FileCheck %s
30#RUN: llvm-dwarfdump -a --verbose  %t.dSYM | FileCheck %s --check-prefix DWARF-CHECK
31
32#RUN: dsymutil --linker parallel --update -oso-prepend-path %p/../Inputs -y %s -o %t.dSYM
33#RUN: llvm-dwarfdump --verify  %t.dSYM | FileCheck %s
34#RUN: llvm-dwarfdump -a --verbose  %t.dSYM | FileCheck %s --check-prefix UPD-DWARF-CHECK
35
36#CHECK: No errors.
37
38#DWARF-CHECK: DW_TAG_compile_unit
39#DWARF-CHECK: DW_AT_name {{.*}}"dwarf5-dw-op-addrx.c"
40#DWARF-CHECK: DW_AT_low_pc {{.*}}0x0000000100000fb0
41#DWARF-CHECK: DW_TAG_variable
42#DWARF-CHECK:   DW_AT_name {{.*}}"arr"
43#DWARF-CHECK:   DW_AT_location {{.*}}(DW_OP_addr 0x100001000)
44#DWARF-CHECK: DW_TAG_variable
45#DWARF-CHECK:   DW_AT_name {{.*}}"arr2"
46#DWARF-CHECK:   DW_AT_location {{.*}}(DW_OP_addr 0x100002000)
47#DWARF-CHECK: DW_TAG_variable
48#DWARF-CHECK:   DW_AT_name {{.*}}"arr3"
49#DWARF-CHECK:   DW_AT_location {{.*}}(DW_OP_addr 0x100003000)
50#DWARF-CHECK: DW_TAG_variable
51#DWARF-CHECK:   DW_AT_name {{.*}}"arr4"
52#DWARF-CHECK:   DW_AT_location {{.*}}(DW_OP_addr 0x100004000)
53#DWARF-CHECK: DW_TAG_variable
54#DWARF-CHECK:   DW_AT_name {{.*}}"arr5"
55#DWARF-CHECK:   DW_AT_location {{.*}}(DW_OP_addr 0x100005000)
56#DWARF-CHECK: DW_TAG_variable
57#DWARF-CHECK:   DW_AT_name {{.*}}"arr6"
58#DWARF-CHECK:   DW_AT_location {{.*}}(DW_OP_addr 0x100006000)
59#DWARF-CHECK: DW_TAG_variable
60#DWARF-CHECK:   DW_AT_name {{.*}}"arr7"
61#DWARF-CHECK:   DW_AT_location {{.*}}(DW_OP_addr 0x100007000)
62#DWARF-CHECK: DW_TAG_variable
63#DWARF-CHECK:   DW_AT_name {{.*}}"arr8"
64#DWARF-CHECK:   DW_AT_location {{.*}}(DW_OP_addr 0x100008000)
65#DWARF-CHECK: DW_TAG_variable
66#DWARF-CHECK:   DW_AT_name {{.*}}"arr9"
67#DWARF-CHECK:   DW_AT_location {{.*}}(DW_OP_addr 0x100009000)
68
69#UPD-DWARF-CHECK: DW_TAG_compile_unit
70#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_variable
75#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_variable
78#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_variable
81#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_variable
84#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_variable
87#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_variable
90#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_variable
93#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_variable
96#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_variable
99#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 = 0x00
103#UPD-DWARF-CHECK: 0x0000000000000000
104#UPD-DWARF-CHECK: 0x0000000000000000
105#UPD-DWARF-CHECK: 0x0000000000000000
106#UPD-DWARF-CHECK: 0x0000000000000000
107#UPD-DWARF-CHECK: 0x0000000000000000
108#UPD-DWARF-CHECK: 0x0000000000000000
109#UPD-DWARF-CHECK: 0x0000000000000000
110#UPD-DWARF-CHECK: 0x0000000000000000
111#UPD-DWARF-CHECK: 0x0000000000000000
112#UPD-DWARF-CHECK: 0x0000000000000000
113
114---
115triple:          'x86_64-apple-darwin'
116objects:
117  - filename:        'dwarf5-dw-op-addrx.o'
118    timestamp:       1676048242
119    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