// REQUIRES: aarch64 // RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t // RUN: ld.lld --image-base=0x12000 -Ttext=0x12000 -defsym long=0x10000000 -defsym short=0x8012004 -defsym short2=0x8012008 -defsym short3=0x801200c %t -o %t.exe // RUN: llvm-objdump -d --no-show-raw-insn %t.exe | FileCheck %s /// The AArch64AbsLongThunk requires 8-byte alignment just in case unaligned /// accesses are disabled. This increases the thunk section alignment to 8, /// and the alignment of the AArch64AbsLongThunk to 8. The short thunk form /// can still use 4-byte alignment. .text .type _start, %function .globl _start _start: b short b short2 b short3 b long nop // CHECK-LABEL: <_start>: // CHECK-NEXT: 12000: b 0x12018 <__AArch64AbsLongThunk_short> // CHECK-NEXT: b 0x1201c <__AArch64AbsLongThunk_short2> // CHECK-NEXT: b 0x12020 <__AArch64AbsLongThunk_short3> // CHECK-NEXT: b 0x12028 <__AArch64AbsLongThunk_long> // CHECK-NEXT: nop // CHECK-NEXT: udf #0x0 // CHECK-EMPTY: // CHECK-LABEL: <__AArch64AbsLongThunk_short>: // CHECK-NEXT: 12018: b 0x8012004 <__AArch64AbsLongThunk_long+0x7ffffdc> // CHECK-EMPY: // CHECK-LABEL: <__AArch64AbsLongThunk_short2>: // CHECK-NEXT: 1201c: b 0x8012008 <__AArch64AbsLongThunk_long+0x7ffffe0> // CHECK-EMPTY: // CHECK-LABEL: <__AArch64AbsLongThunk_short3>: // CHECK-NEXT: 12020: b 0x801200c <__AArch64AbsLongThunk_long+0x7ffffe4> // CHECK-NEXT: udf #0x0 // CHECK-EMPTY: // CHECK-LABEL: <__AArch64AbsLongThunk_long>: // CHECK-NEXT: 12028: ldr x16, 0x12030 <__AArch64AbsLongThunk_long+0x8> // CHECK-NEXT: br x16 // CHECK-NEXT: 00 00 00 10 .word 0x10000000 // CHECK-NEXT: 00 00 00 00 .word 0x00000000