Skip to content

[lld][test][PAC] Do not rely on concrete offsets in LTO tests #143358

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Jun 17, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 25 additions & 25 deletions lld/test/ELF/lto/aarch64-pac-got-func.ll
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,29 @@
; RUN: llvm-readelf -r -x.got %t | FileCheck %s

; CHECK: Relocation section '.rela.dyn' at offset 0x3d0 contains 8 entries:
; CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
; CHECK-NEXT: 00000000000206a0 0000000100000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 func_undef + 0
; CHECK-NEXT: 00000000000206a8 0000000200000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 g1 + 0
; CHECK-NEXT: 00000000000206b0 0000000300000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 g2 + 0
; CHECK-NEXT: 00000000000206b8 0000000400000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 g3 + 0
; CHECK-NEXT: 00000000000206c0 0000000500000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 g4 + 0
; CHECK-NEXT: 00000000000206c8 0000000600000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 var_undef + 0
; CHECK-NEXT: 0000000000020690 0000000700000412 R_AARCH64_AUTH_GLOB_DAT 0000000000010490 func + 0
; CHECK-NEXT: 0000000000020698 0000000a00000412 R_AARCH64_AUTH_GLOB_DAT 00000000000306d0 var + 0
; CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
; CHECK-NEXT: [[#%x,ADDR:]] 0000000100000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 func_undef + 0
; CHECK-NEXT: {{0*}}[[#ADDR+0x8]] 0000000200000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 g1 + 0
; CHECK-NEXT: {{0*}}[[#ADDR+0x10]] 0000000300000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 g2 + 0
; CHECK-NEXT: {{0*}}[[#ADDR+0x18]] 0000000400000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 g3 + 0
; CHECK-NEXT: {{0*}}[[#ADDR+0x20]] 0000000500000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 g4 + 0
; CHECK-NEXT: {{0*}}[[#ADDR+0x28]] 0000000600000412 R_AARCH64_AUTH_GLOB_DAT 0000000000000000 var_undef + 0
; CHECK-NEXT: {{0*}}[[#ADDR-0x10]] 0000000700000412 R_AARCH64_AUTH_GLOB_DAT 0000000000010800 func + 0
; CHECK-NEXT: {{0*}}[[#ADDR-0x8]] 0000000a00000412 R_AARCH64_AUTH_GLOB_DAT 0000000000031400 var + 0

; CHECK: Hex dump of section '.got':
; CHECK-NEXT: 0x00020690 00000000 00000080 00000000 000000a0
;; ^^ func: 0b10000000 bit 63 address diversity = true, bits 61..60 key = IA
;; ^^ var: 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
; CHECK-NEXT: 0x000206a0 00000000 00000080 00000000 000000a0
;; ^^ func_undef: 0b10000000 bit 63 address diversity = true, bits 61..60 key = IA
;; ^^ g1: 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
; CHECK-NEXT: 0x000206b0 00000000 000000a0 00000000 000000a0
;; ^^ g2: 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
;; ^^ g3: 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
; CHECK-NEXT: 0x000206c0 00000000 000000a0 00000000 000000a0
;; ^^ g4: 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
;; ^^ var_undef: 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
; CHECK-NEXT: 0x{{0*}}[[#ADDR-0x10]] 00000000 00000080 00000000 000000a0
;; ^^ func: 0b10000000 bit 63 address diversity = true, bits 61..60 key = IA
;; ^^ var: 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
; CHECK-NEXT: 0x{{0*}}[[#ADDR]] 00000000 00000080 00000000 000000a0
;; ^^ func_undef: 0b10000000 bit 63 address diversity = true, bits 61..60 key = IA
;; ^^ g1: 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
; CHECK-NEXT: 0x{{0*}}[[#ADDR+0x10]] 00000000 000000a0 00000000 000000a0
;; ^^ g2: 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
;; ^^ g3: 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
; CHECK-NEXT: 0x{{0*}}[[#ADDR+0x20]] 00000000 000000a0 00000000 000000a0
;; ^^ g4: 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA
;; ^^ var_undef: 0b10100000 bit 63 address diversity = true, bits 61..60 key = DA

target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-unknown-linux-gnu"
Expand All @@ -37,16 +37,16 @@ target triple = "aarch64-unknown-linux-gnu"
@g3 = external global ptr
@g4 = external global ptr

define void @func() {
define void @func() align 1024 {
entry:
ret void
}
declare void @func_undef()

@var = global i32 42
@var = global i32 42, align 1024
@var_undef = external global i32

define void @bar() #0 {
define void @bar() #0 align 1024 {
entry:
store ptr ptrauth (ptr @func, i32 0), ptr @g1
store ptr ptrauth (ptr @func_undef, i32 0), ptr @g2
Expand All @@ -55,7 +55,7 @@ entry:
ret void
}

define void @_start() {
define void @_start() align 1024 {
entry:
ret void
}
Expand Down