File: dwarf5-addrx.test

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (162 lines) | stat: -rw-r--r-- 7,703 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
## Test that DWARF5 DW_FORM_addrx is correctly recognized
## and converted into the DW_FORM_addr or just preserved
## in case --update.

## $ cat dwarf5-addrx.c
## __attribute__ ((optnone)) int foo1 ( ) {
##   volatile int a = 0x1; return a;
## }
##
## __attribute__ ((optnone)) int foo2 ( ) {
##   volatile int a = 0x2; return a;
## }
##
## __attribute__ ((optnone)) int foo3 ( ) {
##   volatile int a = 0x3; return a;
## }
##
## __attribute__ ((optnone)) int foo4 ( ) {
##   volatile int a = 0x4; return a;
## }
##
## __attribute__ ((optnone)) int foo5 ( ) {
##   volatile int a = 0x5; return a;
## }
##
## __attribute__ ((optnone)) int foo6 ( ) {
##   volatile int a = 0x6; return a;
## }
##
## __attribute__ ((optnone)) int foo7 ( ) {
##   volatile int a = 0x7; return a;
## }
##
## __attribute__ ((optnone)) int foo8 ( ) {
##   volatile int a = 0x8; return a;
## }
##
## int main ( void ) {
##   return foo1()+foo2()+foo3()+foo4()+foo5()+foo6()+foo7()+foo8();
## }
##
## $ clang -gdwarf-5 dwarf5-addrx.c -c -o dwarf5-addrx.o
## $ clang dwarf5-addrx.o -o dwarf5-addrx.out

RUN: dsymutil -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/dwarf5/dwarf5-addrx.out -o %t.dSYM 2>&1 | FileCheck %s --allow-empty
RUN: llvm-dwarfdump --verify %t.dSYM 2>&1 | FileCheck %s

RUN: llvm-dwarfdump --verbose %t.dSYM | FileCheck %s --check-prefix DWARF

RUN: dsymutil --update -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/dwarf5/dwarf5-addrx.out -o %t.dSYM 2>&1 | FileCheck %s --allow-empty
RUN: llvm-dwarfdump --verify %t.dSYM 2>&1 | FileCheck %s

RUN: llvm-dwarfdump --verbose %t.dSYM | FileCheck %s --check-prefix UPDATE-DWARF

RUN: dsymutil --linker parallel -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/dwarf5/dwarf5-addrx.out -o %t.dSYM 2>&1 | FileCheck %s --allow-empty
RUN: llvm-dwarfdump --verify %t.dSYM 2>&1 | FileCheck %s

RUN: llvm-dwarfdump --verbose %t.dSYM | FileCheck %s --check-prefix DWARF

RUN: dsymutil --linker parallel --update -oso-prepend-path %p/../Inputs %p/../Inputs/private/tmp/dwarf5/dwarf5-addrx.out -o %t.dSYM 2>&1 | FileCheck %s --allow-empty
RUN: llvm-dwarfdump --verify %t.dSYM 2>&1 | FileCheck %s

RUN: llvm-dwarfdump --verbose %t.dSYM | FileCheck %s --check-prefix UPDATE-DWARF


CHECK-NOT: error:

DWARF: DW_TAG_compile_unit
DWARF:   DW_AT_name [DW_FORM_strx]  {{.*}}     "dwarf5-addrx.c"
DWARF:   DW_AT_low_pc [DW_FORM_addrx]      (indexed (00000000) address = 0x0000000100000eb0)
DWARF:   DW_AT_high_pc [DW_FORM_data4]   (0x00000103)
DWARF:   DW_AT_addr_base [DW_FORM_sec_offset]      (0x00000008)
DWARF:   DW_TAG_subprogram
DWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000000) address = 0x0000000100000eb0)
DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo1"
DWARF:   DW_TAG_subprogram
DWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000001) address = 0x0000000100000ec0)
DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo2"
DWARF:   DW_TAG_subprogram
DWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000002) address = 0x0000000100000ed0)
DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo3"
DWARF:   DW_TAG_subprogram
DWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000003) address = 0x0000000100000ee0)
DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo4"
DWARF:   DW_TAG_subprogram
DWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000004) address = 0x0000000100000ef0)
DWARF:     DW_AT_high_pc  [DW_FORM_data4]  (0x00000010)
DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo5"
DWARF:   DW_TAG_subprogram
DWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000005) address = 0x0000000100000f00)
DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo6"
DWARF:   DW_TAG_subprogram
DWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000006) address = 0x0000000100000f10)
DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo7"
DWARF:   DW_TAG_subprogram
DWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000007) address = 0x0000000100000f20)
DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo8"
DWARF:   DW_TAG_subprogram
DWARF:     DW_AT_low_pc [DW_FORM_addrx]    (indexed (00000008) address = 0x0000000100000f30)
DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000083)
DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "main"

UPDATE-DWARF: DW_TAG_compile_unit
UPDATE-DWARF:   DW_AT_name [DW_FORM_strx]  {{.*}}     "dwarf5-addrx.c"
UPDATE-DWARF:   DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000000) address = 0x0000000000000000)
UPDATE-DWARF:   DW_AT_high_pc [DW_FORM_data4]   (0x00000103)
UPDATE-DWARF:   DW_TAG_subprogram
UPDATE-DWARF:     DW_AT_low_pc [DW_FORM_addrx] (indexed (00000000) address = 0x0000000000000000)
UPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
UPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo1"
UPDATE-DWARF:   DW_TAG_subprogram
UPDATE-DWARF:     DW_AT_low_pc [DW_FORM_addrx] (indexed (00000001) address = 0x0000000000000010)
UPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
UPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo2"
UPDATE-DWARF:   DW_TAG_subprogram
UPDATE-DWARF:     DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000002) address = 0x0000000000000020)
UPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
UPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo3"
UPDATE-DWARF:   DW_TAG_subprogram
UPDATE-DWARF:     DW_AT_low_pc  [DW_FORM_addrx] (indexed (00000003) address = 0x0000000000000030)
UPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
UPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo4"
UPDATE-DWARF:   DW_TAG_subprogram
UPDATE-DWARF:     DW_AT_low_pc [DW_FORM_addrx]  (indexed (00000004) address = 0x0000000000000040)
UPDATE-DWARF:     DW_AT_high_pc  [DW_FORM_data4]  (0x00000010)
UPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo5"
UPDATE-DWARF:   DW_TAG_subprogram
UPDATE-DWARF:     DW_AT_low_pc  [DW_FORM_addrx] (indexed (00000005) address = 0x0000000000000050)
UPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
UPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo6"
UPDATE-DWARF:   DW_TAG_subprogram
UPDATE-DWARF:     DW_AT_low_pc  [DW_FORM_addrx] (indexed (00000006) address = 0x0000000000000060)
UPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
UPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo7"
UPDATE-DWARF:   DW_TAG_subprogram
UPDATE-DWARF:     DW_AT_low_pc  [DW_FORM_addrx] (indexed (00000007) address = 0x0000000000000070)
UPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000010)
UPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "foo8"
UPDATE-DWARF:   DW_TAG_subprogram
UPDATE-DWARF:     DW_AT_low_pc  [DW_FORM_addrx] (indexed (00000008) address = 0x0000000000000080)
UPDATE-DWARF:     DW_AT_high_pc [DW_FORM_data4]   (0x00000083)
UPDATE-DWARF:     DW_AT_name  [DW_FORM_strx] {{.*}}   "main"
UPDATE-DWARF:  .debug_addr contents:
UPDATE-DWARF:  0x00000000: Address table header: length = 0x0000004c, format = DWARF32, version = 0x0005, addr_size = 0x08, seg_size = 0x00
UPDATE-DWARF: Addrs: [
UPDATE-DWARF: 0x0000000000000000
UPDATE-DWARF: 0x0000000000000010
UPDATE-DWARF: 0x0000000000000020
UPDATE-DWARF: 0x0000000000000030
UPDATE-DWARF: 0x0000000000000040
UPDATE-DWARF: 0x0000000000000050
UPDATE-DWARF: 0x0000000000000060
UPDATE-DWARF: 0x0000000000000070
UPDATE-DWARF: 0x0000000000000080
UPDATE-DWARF: ]