2 // RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux %s -o %t
3 // RUN: ld.lld %t -o %t2 2>&1
4 // RUN: llvm-objdump -triple=aarch64-none-linux -d %t2 | FileCheck %s
6 // Check that the ARM 64-bit ABI rules for undefined weak symbols are applied.
7 // Branch instructions are resolved to the next instruction. Undefined
8 // Symbols in relative are resolved to the place so S - P + A = A.
23 // R_AARCH64_ADR_PREL_LO21
25 // R_AARCH64_ADR_PREL_PG_HI21
33 // R_AARCH64_LD_PREL_LO19
36 // CHECK: Disassembly of section .text:
38 // CHECK: 20000: {{.*}} b #4
39 // CHECK-NEXT: 20004: {{.*}} bl #4
40 // CHECK-NEXT: 20008: {{.*}} b.eq #4
41 // CHECK-NEXT: 2000c: {{.*}} cbz x1, #4
42 // CHECK-NEXT: 20010: {{.*}} adr x0, #0
43 // CHECK-NEXT: 20014: {{.*}} adrp x0, #-131072
44 // CHECK: 20018: {{.*}} .word 0x00000000
45 // CHECK-NEXT: 2001c: {{.*}} .word 0x00000000
46 // CHECK-NEXT: 20020: {{.*}} .word 0x00000000
47 // CHECK-NEXT: 20024: {{.*}} .short 0x0000
49 // CHECK-NEXT: 20026: {{.*}} ldr x8, #0