| # REQUIRES: aarch64 |
| |
| # RUN: llvm-mc -filetype=obj -triple=arm64_32-apple-watchos %s -o %t.o |
| # RUN: %lld-watchos -U _external %t.o -o %t |
| # RUN: llvm-objdump -d --macho %t | FileCheck %s |
| |
| .text |
| .align 2 |
| .globl _foo |
| _foo: |
| ret |
| .globl _bar |
| _bar: |
| ret |
| |
| .globl _main |
| _main: |
| # CHECK-LABEL: _main: |
| |
| L1: adrp x0, _foo@PAGE |
| L2: add x0, x0, _foo@PAGEOFF |
| # CHECK-NEXT: adr x0 |
| # CHECK-NEXT: nop |
| |
| L3: adrp x0, _ptr@PAGE |
| L4: add x1, x0, _ptr@PAGEOFF |
| L5: ldr x2, [x1] |
| # CHECK-NEXT: nop |
| # CHECK-NEXT: nop |
| # CHECK-NEXT: ldr x2 |
| |
| L6: adrp x0, _foo@PAGE |
| L7: adrp x0, _bar@PAGE |
| # CHECK-NEXT: adrp x0 |
| # CHECK-NEXT: nop |
| |
| L8: adrp x0, _ptr@PAGE |
| L9: ldr x0, [x0, _ptr@PAGEOFF] |
| # CHECK-NEXT: nop |
| # CHECK-NEXT: ldr x0 |
| |
| L10: adrp x0, _ptr@PAGE |
| L11: ldr w0, [x0, _ptr@PAGEOFF] |
| # CHECK-NEXT: nop |
| # CHECK-NEXT: ldr w0, _ptr |
| |
| L12: adrp x0, _external@PAGE |
| L13: ldr w1, [x0, _external@PAGEOFF] |
| L14: ldr x2, [x1] |
| # CHECK-NEXT: nop |
| # CHECK-NEXT: ldr w1, 0x{{.*}} |
| # CHECK-NEXT: ldr x2, [x1] |
| |
| .data |
| .align 4 |
| _ptr: |
| .quad 0 |
| |
| .loh AdrpAdd L1, L2 |
| .loh AdrpAddLdr L3, L4, L5 |
| .loh AdrpAdrp L6, L7 |
| .loh AdrpLdr L8, L9 |
| .loh AdrpLdrGot L10, L11 |
| .loh AdrpLdrGotLdr L12, L13, L14 |