145 lines · plain
1# REQUIRES: aarch642 3# RUN: rm -rf %t && split-file %s %t && cd %t4 5# RUN: llvm-mc -filetype=obj -triple=aarch64 %p/Inputs/shared.s -o a.o6# RUN: ld.lld -shared a.o -o a.so7 8#--- ok.s9# RUN: llvm-mc -filetype=obj -triple=aarch64 ok.s -o ok.o10 11# RUN: ld.lld ok.o a.so -pie -o ok112# RUN: llvm-readelf -r -S -x .got ok1 | FileCheck %s --check-prefix=OK113 14# RUN: ld.lld ok.o a.o -pie -o ok215# RUN: llvm-readelf -r -S -x .got -s ok2 | FileCheck %s --check-prefix=OK216 17# OK1: Offset Info Type Symbol's Value Symbol's Name + Addend18# OK1-NEXT: 0000000000020380 0000000100000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 bar + 019# OK1-NEXT: 0000000000020388 0000000200000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 zed + 020 21## Symbol's values for bar and zed are equal since they contain no content (see Inputs/shared.s)22# OK2: Offset Info Type Symbol's Value Symbol's Name + Addend23# OK2-NEXT: 0000000000020320 0000000000000411 R_AARCH64_AUTH_RELATIVE 1026024# OK2-NEXT: 0000000000020328 0000000000000411 R_AARCH64_AUTH_RELATIVE 1026025 26# OK1: Hex dump of section '.got':27# OK1-NEXT: 0x00020380 00000000 00000080 00000000 000000a028## ^^29## 0b10000000 bit 63 address diversity = true, bits 61..60 key = IA30## ^^31## 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA32 33# OK2: Symbol table '.symtab' contains {{.*}} entries:34# OK2: Num: Value Size Type Bind Vis Ndx Name35# OK2: 0000000000010260 0 FUNC GLOBAL DEFAULT 6 bar36# OK2: 0000000000010260 0 NOTYPE GLOBAL DEFAULT 6 zed37 38# OK2: Hex dump of section '.got':39# OK2-NEXT: 0x00020320 00000000 00000080 00000000 000000a040## ^^41## 0b10000000 bit 63 address diversity = true, bits 61..60 key = IA42## ^^43## 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA44 45# RUN: llvm-objdump -d ok1 | FileCheck %s --check-prefix=OK1-ASM46 47# OK1-ASM: <_start>:48# OK1-ASM-NEXT: adrp x0, 0x2000049# OK1-ASM-NEXT: ldr x0, [x0, #0x380]50# OK1-ASM-NEXT: adrp x1, 0x2000051# OK1-ASM-NEXT: add x1, x1, #0x38052# OK1-ASM-NEXT: adrp x0, 0x2000053# OK1-ASM-NEXT: ldr x0, [x0, #0x388]54# OK1-ASM-NEXT: adrp x1, 0x2000055# OK1-ASM-NEXT: add x1, x1, #0x38856 57# RUN: llvm-objdump -d ok2 | FileCheck %s --check-prefix=OK2-ASM58 59# OK2-ASM: <_start>:60# OK2-ASM-NEXT: adrp x0, 0x2000061# OK2-ASM-NEXT: ldr x0, [x0, #0x320]62# OK2-ASM-NEXT: adrp x1, 0x2000063# OK2-ASM-NEXT: add x1, x1, #0x32064# OK2-ASM-NEXT: adrp x0, 0x2000065# OK2-ASM-NEXT: ldr x0, [x0, #0x328]66# OK2-ASM-NEXT: adrp x1, 0x2000067# OK2-ASM-NEXT: add x1, x1, #0x32868 69.globl _start70_start:71 adrp x0, :got_auth:bar72 ldr x0, [x0, :got_auth_lo12:bar]73 adrp x1, :got_auth:bar74 add x1, x1, :got_auth_lo12:bar75 adrp x0, :got_auth:zed76 ldr x0, [x0, :got_auth_lo12:zed]77 adrp x1, :got_auth:zed78 add x1, x1, :got_auth_lo12:zed79 80#--- ok-tiny.s81# RUN: llvm-mc -filetype=obj -triple=aarch64 ok-tiny.s -o ok-tiny.o82 83# RUN: ld.lld ok-tiny.o a.so -pie -o tiny184# RUN: llvm-readelf -r -S -x .got tiny1 | FileCheck %s --check-prefix=TINY185 86# RUN: ld.lld ok-tiny.o a.o -pie -o tiny287# RUN: llvm-readelf -r -S -x .got -s tiny2 | FileCheck %s --check-prefix=TINY288 89# TINY1: Offset Info Type Symbol's Value Symbol's Name + Addend90# TINY1-NEXT: 0000000000020368 0000000100000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 bar + 091# TINY1-NEXT: 0000000000020370 0000000200000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 zed + 092 93## Symbol's values for bar and zed are equal since they contain no content (see Inputs/shared.s)94# TINY2: Offset Info Type Symbol's Value Symbol's Name + Addend95# TINY2-NEXT: 0000000000020308 0000000000000411 R_AARCH64_AUTH_RELATIVE 1024896# TINY2-NEXT: 0000000000020310 0000000000000411 R_AARCH64_AUTH_RELATIVE 1024897 98# TINY1: Hex dump of section '.got':99# TINY1-NEXT: 0x00020368 00000000 00000080 00000000 000000a0100## ^^101## 0b10000000 bit 63 address diversity = true, bits 61..60 key = IA102## ^^103## 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA104 105# TINY2: Symbol table '.symtab' contains {{.*}} entries:106# TINY2: Num: Value Size Type Bind Vis Ndx Name107# TINY2: 0000000000010248 0 FUNC GLOBAL DEFAULT 6 bar108# TINY2: 0000000000010248 0 NOTYPE GLOBAL DEFAULT 6 zed109 110# TINY2: Hex dump of section '.got':111# TINY2-NEXT: 0x00020308 00000000 00000080 00000000 000000a0112## ^^113## 0b10000000 bit 63 address diversity = true, bits 61..60 key = IA114## ^^115## 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA116 117# RUN: llvm-objdump -d tiny1 | FileCheck %s --check-prefix=TINY1-ASM118 119# TINY1-ASM: <_start>:120# TINY1-ASM-NEXT: adr x0, 0x20368121# TINY1-ASM-NEXT: ldr x1, 0x20370122 123# RUN: llvm-objdump -d tiny2 | FileCheck %s --check-prefix=TINY2-ASM124 125# TINY2-ASM: <_start>:126# TINY2-ASM-NEXT: adr x0, 0x20308127# TINY2-ASM-NEXT: ldr x1, 0x20310128 129.globl _start130_start:131 adr x0, :got_auth:bar132 ldr x1, :got_auth:zed133 134#--- err.s135# RUN: llvm-mc -filetype=obj -triple=aarch64 err.s -o err.o136# RUN: not ld.lld err.o a.so -pie 2>&1 | FileCheck %s --check-prefix=ERR --implicit-check-not=error:137# ERR: error: both AUTH and non-AUTH GOT entries for 'bar' requested, but only one type of GOT entry per symbol is supported138 139.globl _start140_start:141 adrp x0, :got_auth:bar142 ldr x0, [x0, :got_auth_lo12:bar]143 adrp x0, :got:bar144 ldr x0, [x0, :got_lo12:bar]145