diff --git a/lld/test/MachO/arm64-relocs.s b/lld/test/MachO/arm64-relocs.s new file mode 100644 --- /dev/null +++ b/lld/test/MachO/arm64-relocs.s @@ -0,0 +1,53 @@ +# REQUIRES: arm +# RUN: llvm-mc -filetype=obj -triple=arm64-apple-darwin %s -o %t.o +# RUN: %lld -dylib -arch arm64 -lSystem -o %t %t.o +# RUN: (llvm-objdump --syms %t; llvm-objdump --macho -d --section=__const %t) | FileCheck %s + +# CHECK-LABEL: SYMBOL TABLE: +# CHECK-DAG: [[#%x,PTR_1:]] l O __DATA_CONST,__const _ptr_1 +# CHECK-DAG: [[#%x,PTR_2:]] l O __DATA_CONST,__const _ptr_2 +# CHECK-DAG: [[#%x,BAR:]] g F __TEXT,__text _bar +# CHECK-DAG: [[#%x,BAZ:]] g O __DATA,__data _baz + +# CHECK-LABEL: _foo: +# CHECK-NEXT: bl 0x[[#BAR+120]] +# CHECK-NEXT: adrp x2, [[#]] ; 0x[[#BAZ+4096-128]] +# CHECK-NEXT: ldr x2, [x2, #128] +# CHECK-NEXT: ret + +# CHECK-LABEL: Contents of (__DATA_CONST,__const) section +# CHECK: [[#PTR_1]] {{0*}}[[#BAZ]] 00000000 00000000 00000000 +# CHECK: [[#PTR_2]] {{0*}}[[#BAZ]] 00000000 00000000 00000000 + +.text +.globl _foo, _bar, _baz +.p2align 2 +_foo: + ## Generates ARM64_RELOC_BRANCH26 and ARM64_RELOC_ADDEND + bl _bar + 123 + ## Generates ARM64_RELOC_PAGE21 and ADDEND + adrp x2, _baz@PAGE + 4097 + ## Generates ARM64_RELOC_PAGEOFF12 + ldr x2, [x2, _baz@PAGEOFF] + ret + +.p2align 2 +_bar: + ret + +.data +.space 128 +_baz: +.space 1 + +.section __DATA_CONST,__const +## These generate ARM64_RELOC_UNSIGNED symbol relocations +## XXX: how to generate UNSIGNED section relocations? +_ptr_1: + .quad _baz + .space 8 +_ptr_2: + .quad _baz + .space 8 + +.subsections_via_symbols