xref: /llvm-project/llvm/test/tools/dsymutil/ARM/dwarf5-addr-base.test (revision f1fdfe6888f93b9f6dfb4689e1f3206de584ff5b)
1; This test checks to ensure that if three DWARFv5 object files have correct values for the DW_AT_addr_base in their compile units.
2
3; 1.o was produced with the source file:
4
5; a.cpp
6; __attribute__((section("1,__text_foo"))) void foo() {}
7;
8; int foo2(int a) {
9;     return a+5;
10; }
11;
12; int foo3(int x) {
13;     return x+2;
14; }
15;
16; int main () {
17;     return 1;
18; }
19
20; clang -g -c -O1 a.cpp -gdwarf-5 -o 1.o
21
22; 2.o was produced with the following source file:
23
24; b.cpp
25; __attribute__((section("1,__text_foo"))) void bar() {}
26;
27; int bar2(int a) {
28;     return a+5;
29; }
30;
31; int bar3(int x) {
32;     return x+2;
33; }
34
35; clang -g -c -O1 b.cpp -gdwarf-5 -o 2.o
36
37; 3.o was produced with the following source file:
38
39; c.cpp
40;
41; int baz(int x) {
42;     return x+2;
43; }
44
45; clang -g -c -O1 c.cpp -gdwarf-5 -o 3.o
46
47
48RUN: rm -rf %t.dir && mkdir -p %t.dir
49RUN: dsymutil -y %p/dummy-debug-map-amr64.map -oso-prepend-path=%p/../Inputs/DWARF5-addr-base-str-off-base -o %t.dir/dwarf5-addr-base.dSYM
50RUN: llvm-dwarfdump %t.dir/dwarf5-addr-base.dSYM -a --verbose | FileCheck %s
51
52RUN: rm -rf %t.dir && mkdir -p %t.dir
53RUN: dsymutil --linker parallel --no-odr -y %p/dummy-debug-map-amr64.map \
54RUN:   -oso-prepend-path=%p/../Inputs/DWARF5-addr-base-str-off-base \
55RUN:   -o %t.dir/dwarf5-addr-base.dSYM
56RUN: llvm-dwarfdump %t.dir/dwarf5-addr-base.dSYM -a --verbose | FileCheck %s
57
58RUN: rm -rf %t.dir && mkdir -p %t.dir
59RUN: dsymutil --linker parallel -y %p/dummy-debug-map-amr64.map \
60RUN:   -oso-prepend-path=%p/../Inputs/DWARF5-addr-base-str-off-base \
61RUN:   -o %t.dir/dwarf5-addr-base.dSYM
62RUN: llvm-dwarfdump %t.dir/dwarf5-addr-base.dSYM -a --verbose | \
63RUN:   FileCheck %s --check-prefixes=CHECK,CHECK-LLVM
64
65
66RUN: rm -rf %t.dir && mkdir -p %t.dir
67RUN: dsymutil --update -y %p/dummy-debug-map-amr64.map -oso-prepend-path=%p/../Inputs/DWARF5-addr-base-str-off-base -o %t.dir/dwarf5-addr-base.dSYM
68RUN: llvm-dwarfdump %t.dir/dwarf5-addr-base.dSYM -a --verbose | FileCheck %s --check-prefix=UPD
69
70RUN: rm -rf %t.dir && mkdir -p %t.dir
71RUN: dsymutil --linker parallel --no-odr --update -y %p/dummy-debug-map-amr64.map \
72RUN:   -oso-prepend-path=%p/../Inputs/DWARF5-addr-base-str-off-base \
73RUN:   -o %t.dir/dwarf5-addr-base.dSYM
74RUN: llvm-dwarfdump %t.dir/dwarf5-addr-base.dSYM -a --verbose | \
75RUN:   FileCheck %s --check-prefix=UPD
76
77RUN: rm -rf %t.dir && mkdir -p %t.dir
78RUN: dsymutil --linker parallel --update -y %p/dummy-debug-map-amr64.map \
79RUN:   -oso-prepend-path=%p/../Inputs/DWARF5-addr-base-str-off-base \
80RUN:   -o %t.dir/dwarf5-addr-base.dSYM
81RUN: llvm-dwarfdump %t.dir/dwarf5-addr-base.dSYM -a --verbose | \
82RUN:   FileCheck %s --check-prefix=UPD
83
84
85CHECK: .debug_info contents:
86
87CHECK-LLVM: Compile Unit: length = 0x0000001f, format = DWARF32, version = 0x0005, unit_type = DW_UT_compile, abbr_offset = {{.*}}, addr_size = 0x08
88CHECK-LLVM: DW_TAG_compile_unit
89CHECK-LLVM: DW_TAG_base_type
90
91CHECK: Compile Unit: length = 0x0000004a, format = DWARF32, version = 0x0005, unit_type = DW_UT_compile, abbr_offset = {{.*}}, addr_size = 0x08
92
93CHECK: DW_TAG_compile_unit
94CHECK:   DW_AT_addr_base [DW_FORM_sec_offset]      (0x00000008)
95
96CHECK:   DW_TAG_subprogram
97CHECK-NEXT:                DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000000) address = 0x[[ADDR1:[0-9a-f]+]])
98
99
100CHECK: Compile Unit: length = 0x0000004a, format = DWARF32, version = 0x0005, unit_type = DW_UT_compile, abbr_offset = {{.*}}, addr_size = 0x08
101
102CHECK: DW_TAG_compile_unit
103CHECK:              DW_AT_addr_base [DW_FORM_sec_offset]      (0x00000018)
104
105CHECK: DW_TAG_subprogram
106CHECK-NEXT:                 DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000000) address = 0x[[ADDR2:[0-9a-f]+]])
107
108CHECK: Compile Unit: length = 0x00000043, format = DWARF32, version = 0x0005, unit_type = DW_UT_compile, abbr_offset = {{.*}}, addr_size = 0x08
109
110CHECK: DW_TAG_compile_unit
111CHECK: DW_AT_addr_base [DW_FORM_sec_offset]      (0x00000028)
112
113CHECK:   DW_TAG_subprogram
114CHECK-NEXT:                 DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000000) address = 0x[[ADDR3:[0-9a-f]+]])
115
116CHECK: .debug_addr contents:
117CHECK-NEXT: 0x00000000: Address table header: length = 0x0000000c, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00
118CHECK-NEXT: Addrs: [
119CHECK-NEXT: 0x[[ADDR1]]
120CHECK-NEXT: ]
121CHECK-NEXT: 0x00000010: Address table header: length = 0x0000000c, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00
122CHECK-NEXT: Addrs: [
123CHECK-NEXT: 0x[[ADDR2]]
124CHECK-NEXT: ]
125CHECK-NEXT: 0x00000020: Address table header: length = 0x0000000c, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00
126CHECK-NEXT: Addrs: [
127CHECK-NEXT: 0x[[ADDR3]]
128CHECK-NEXT: ]
129
130UPD: .debug_info contents:
131UPD-NEXT: 0x00000000: Compile Unit: length = 0x00000081, format = DWARF32, version = 0x0005, unit_type = DW_UT_compile, abbr_offset = 0x0000, addr_size = 0x08
132
133UPD: 0x0000000c: DW_TAG_compile_unit [1] *
134UPD:               DW_AT_addr_base [DW_FORM_sec_offset]      (0x00000008)
135
136UPD: 0x00000031:   DW_TAG_subprogram [2]   (0x0000000c)
137UPD-NEXT:                DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000000) address = 0x0000000000000018)
138
139UPD: 0x0000003d:   DW_TAG_subprogram [3] * (0x0000000c)
140UPD-NEXT:                 DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000001) address = 0x0000000000000000)
141
142UPD: 0x00000057:   DW_TAG_subprogram [3] * (0x0000000c)
143UPD-NEXT:                 DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000002) address = 0x0000000000000008)
144
145UPD: 0x00000071:   DW_TAG_subprogram [5]   (0x0000000c)
146UPD-NEXT:                 DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000003) address = 0x0000000000000010)
147
148
149UPD: 0x00000085: Compile Unit: length = 0x00000072, format = DWARF32, version = 0x0005, unit_type = DW_UT_compile, abbr_offset = 0x00{{00|99}}, addr_size = 0x08
150
151UPD: 0x00000091: DW_TAG_compile_unit [1] *
152UPD:              DW_AT_addr_base [DW_FORM_sec_offset]      (0x00000008)
153
154UPD: 0x000000b6:   DW_TAG_subprogram [2]   (0x00000091)
155UPD-NEXT:                 DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000000) address = 0x0000000000000018)
156
157UPD: 0x000000c2:   DW_TAG_subprogram [3] * (0x00000091)
158UPD-NEXT:                 DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000001) address = 0x0000000000000000)
159
160UPD: 0x000000dc:   DW_TAG_subprogram [3] * (0x00000091)
161UPD-NEXT:                 DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000002) address = 0x0000000000000008)
162
163UPD: 0x000000fb: Compile Unit: length = 0x00000044, format = DWARF32, version = 0x0005, unit_type = DW_UT_compile, abbr_offset = 0x0{{000|115}}, addr_size = 0x08
164
165UPD: 0x00000107: DW_TAG_compile_unit {{.*}} *
166UPD: DW_AT_addr_base [DW_FORM_sec_offset]      (0x00000008)
167
168UPD: 0x00000124:   DW_TAG_subprogram {{.*}} * (0x00000107)
169UPD-NEXT:                 DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000000) address = 0x0000000000000018)
170
171UPD: .debug_addr contents:
172UPD-NEXT: 0x00000000: Address table header: length = 0x00000024, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00
173UPD-NEXT: Addrs: [
174UPD-NEXT: 0x0000000000000018
175UPD-NEXT: 0x0000000000000000
176UPD-NEXT: 0x0000000000000008
177UPD-NEXT: 0x0000000000000010
178UPD-NEXT: ]
179UPD-NEXT: 0x00000028: Address table header: length = 0x0000001c, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00
180UPD-NEXT: Addrs: [
181UPD-NEXT: 0x0000000000000010
182UPD-NEXT: 0x0000000000000000
183UPD-NEXT: 0x0000000000000008
184UPD-NEXT: ]
185UPD-NEXT: 0x00000048: Address table header: length = 0x0000000c, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00
186UPD-NEXT: Addrs: [
187UPD-NEXT: 0x0000000000000000
188UPD-NEXT: ]
189