@@ -77,6 +77,79 @@ _start:
77
77
adrp x1, :got_auth:zed
78
78
add x1, x1, :got_auth_lo12:zed
79
79
80
+ #--- ok-tiny.s
81
+
82
+ # RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux ok-tiny.s -o ok-tiny.o
83
+
84
+ # RUN: ld.lld ok-tiny.o a.so -pie -o external-tiny
85
+ # RUN: llvm-readelf -r -S -x .got external-tiny | FileCheck %s --check-prefix=EXTERNAL-TINY
86
+
87
+ # RUN: ld.lld ok-tiny.o a.o -pie -o local-tiny
88
+ # RUN: llvm-readelf -r -S -x .got -s local-tiny | FileCheck %s --check-prefix=LOCAL-TINY
89
+
90
+ # EXTERNAL-TINY: Offset Info Type Symbol's Value Symbol's Name + Addend
91
+ # EXTERNAL-TINY-NEXT: 0000000000020380 000000010000e201 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 bar + 0
92
+ # EXTERNAL-TINY-NEXT: 0000000000020388 000000020000e201 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 zed + 0
93
+
94
+ ## Symbol's values for bar and zed are equal since they contain no content (see Inputs/shared.s)
95
+ # LOCAL-TINY: Offset Info Type Symbol's Value Symbol's Name + Addend
96
+ # LOCAL-TINY-NEXT: 0000000000020320 0000000000000411 R_AARCH64_AUTH_RELATIVE 10260
97
+ # LOCAL-TINY-NEXT: 0000000000020328 0000000000000411 R_AARCH64_AUTH_RELATIVE 10260
98
+
99
+ # EXTERNAL-TINY: Hex dump of section '.got':
100
+ # EXTERNAL-TINY-NEXT: 0x00020380 00000000 00000080 00000000 000000a0
101
+ # ^^
102
+ # 0b10000000 bit 63 address diversity = true, bits 61..60 key = IA
103
+ # ^^
104
+ # 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
105
+
106
+ # LOCAL-TINY: Symbol table '.symtab' contains {{.*}} entries:
107
+ # LOCAL-TINY: Num: Value Size Type Bind Vis Ndx Name
108
+ # LOCAL-TINY: 0000000000010260 0 FUNC GLOBAL DEFAULT 6 bar
109
+ # LOCAL-TINY: 0000000000010260 0 NOTYPE GLOBAL DEFAULT 6 zed
110
+
111
+ # LOCAL-TINY: Hex dump of section '.got':
112
+ # LOCAL-TINY-NEXT: 0x00020320 00000000 00000080 00000000 000000a0
113
+ # ^^
114
+ # 0b10000000 bit 63 address diversity = true, bits 61..60 key = IA
115
+ # ^^
116
+ # 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
117
+
118
+ # RUN: llvm-objdump -d external-tiny | FileCheck %s --check-prefix=EXTERNAL-TINY-ASM
119
+
120
+ # EXTERNAL-TINY-ASM: <_start>:
121
+ # EXTERNAL-TINY-ASM-NEXT: adr x0, 0x20380
122
+ # EXTERNAL-TINY-ASM-NEXT: ldr x1, [x0]
123
+ # EXTERNAL-TINY-ASM-NEXT: adr x0, 0x20380
124
+ # EXTERNAL-TINY-ASM-NEXT: ldr x1, 0x20380
125
+ # EXTERNAL-TINY-ASM-NEXT: adr x0, 0x20388
126
+ # EXTERNAL-TINY-ASM-NEXT: ldr x1, [x0]
127
+ # EXTERNAL-TINY-ASM-NEXT: adr x0, 0x20388
128
+ # EXTERNAL-TINY-ASM-NEXT: ldr x1, 0x20388
129
+
130
+ # RUN: llvm-objdump -d local-tiny | FileCheck %s --check-prefix=LOCAL-TINY-ASM
131
+
132
+ # LOCAL-TINY-ASM: <_start>:
133
+ # LOCAL-TINY-ASM-NEXT: adr x0, 0x20320
134
+ # LOCAL-TINY-ASM-NEXT: ldr x1, [x0]
135
+ # LOCAL-TINY-ASM-NEXT: adr x0, 0x20320
136
+ # LOCAL-TINY-ASM-NEXT: ldr x1, 0x20320
137
+ # LOCAL-TINY-ASM-NEXT: adr x0, 0x20328
138
+ # LOCAL-TINY-ASM-NEXT: ldr x1, [x0]
139
+ # LOCAL-TINY-ASM-NEXT: adr x0, 0x20328
140
+ # LOCAL-TINY-ASM-NEXT: ldr x1, 0x20328
141
+
142
+ .globl _start
143
+ _start:
144
+ adr x0, :got_auth:bar
145
+ ldr x1, [x0]
146
+ adr x0, :got_auth:bar
147
+ ldr x1, :got_auth:bar
148
+ adr x0, :got_auth:zed
149
+ ldr x1, [x0]
150
+ adr x0, :got_auth:zed
151
+ ldr x1, :got_auth:zed
152
+
80
153
#--- err.s
81
154
# RUN: llvm-mc -filetype=obj -triple=aarch64 err.s -o err.o
82
155
# RUN: not ld.lld err.o a.so -pie -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR --implicit-check-not=error:
0 commit comments