54 lines · plain
1// This test checks processing of R_AARCH64_PREL64/32/16 relocations2// S + A - P = Value3// S = P - A + Value4 5// REQUIRES: system-linux6 7// RUN: %clang %cflags -nostartfiles -nostdlib %s -o %t.exe -mlittle-endian \8// RUN: -Wl,-q -Wl,-z,max-page-size=4 -Wl,--no-relax9// RUN: llvm-readelf -Wa %t.exe | FileCheck %s -check-prefix=CHECKPREL10 11// CHECKPREL: R_AARCH64_PREL16 {{.*}} .dummy + 012// CHECKPREL-NEXT: R_AARCH64_PREL32 {{.*}} _start + 413// CHECKPREL-NEXT: R_AARCH64_PREL64 {{.*}} _start + 814 15// RUN: llvm-bolt %t.exe -o %t.bolt16// RUN: llvm-objdump -D %t.bolt | FileCheck %s --check-prefix=CHECKPREL3217 18// CHECKPREL32: [[#%x,DATATABLEADDR:]] <datatable>:19// CHECKPREL32-NEXT: 00:20// CHECKPREL32-NEXT: 04: {{.*}} .word 0x[[#%x,VALUE:]]21 22// CHECKPREL32: [[#DATATABLEADDR + VALUE]] <_start>:23 24// RUN: llvm-objdump -D %t.bolt | FileCheck %s --check-prefix=CHECKPREL6425// CHECKPREL64: [[#%x,DATATABLEADDR:]] <datatable>:26// CHECKPREL64-NEXT: 00:27// CHECKPREL64-NEXT: 04:28// CHECKPREL64-NEXT: 08: {{.*}} .word 0x[[#%x,VALUE:]]29// CHECKPREL64-NEXT: 0c: {{.*}} .word 0x0000000030 31// CHECKPREL64: [[#DATATABLEADDR + VALUE]] <_start>:32 33 .section .text34 .align 435 .globl _start36 .type _start, %function37_start:38 adrp x0, datatable39 add x0, x0, :lo12:datatable40 mov x0, #041 ret42 43.section .dummy, "a", @progbits44dummy:45 .word 046 47 .data48 .align 849datatable:50 .hword dummy - datatable51 .align 252 .word _start - datatable53 .xword _start - datatable54