# REQUIRES: aarch64
# RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux-gnu %s -o %t.o
# RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux-gnu %p/Inputs/aarch64-addrifunc.s -o %t1.o

# RUN: ld.lld --shared --soname=t1.so %t1.o -o %t1.so
# RUN: ld.lld --pie %t1.so %t.o -o %t
# RUN: llvm-objdump -d --no-show-raw-insn --mattr=+bti --triple=aarch64-linux-gnu %t | FileCheck %s

# RUN: ld.lld -shared -Bsymbolic %t1.so %t.o -o %t.so
# RUN: llvm-objdump -d --no-show-raw-insn --mattr=+bti %t | FileCheck %s --check-prefix=SHARED

# When the address of an ifunc is taken using a non-got reference which clang
# can do, LLD exports a canonical PLT entry that may have its address taken so
# we must use bti c.

# CHECK: Disassembly of section .plt:
# CHECK: 00000000000103a0 <.plt>:
# CHECK-NEXT:    103a0:         bti     c
# CHECK-NEXT:                   stp     x16, x30, [sp, #-16]!
# CHECK-NEXT:                   adrp    x16, 0x30000
# CHECK-NEXT:                   ldr     x17, [x16, #1344]
# CHECK-NEXT:                   add     x16, x16, #1344
# CHECK-NEXT:                   br      x17
# CHECK-NEXT:                   nop
# CHECK-NEXT:                   nop
# CHECK: 00000000000103c0 <func1@plt>:
# CHECK-NEXT:    103c0:         adrp    x16, 0x30000
# CHECK-NEXT:                   ldr     x17, [x16, #1352]
# CHECK-NEXT:                   add     x16, x16, #1352
# CHECK-NEXT:                   br      x17
# CHECK-NEXT:                   nop
# CHECK-NEXT:                   nop
# CHECK-EMPTY:
# CHECK: Disassembly of section .iplt:
# CHECK-EMPTY:
## The address of ifunc1@plt does not escape so it does not need `bti c`,
## but having bti is not wrong.
# CHECK-NEXT: 00000000000103e0 <.iplt>:
# CHECK-NEXT:    103e0:         bti     c
# CHECK-NEXT:                   adrp    x16, 0x30000
# CHECK-NEXT:                   ldr     x17, [x16, #1360]
# CHECK-NEXT:                   add     x16, x16, #1360
# CHECK-NEXT:                   br      x17
# CHECK-NEXT:                   nop
# CHECK-EMPTY:
## The address of ifunc2 (STT_FUNC) escapes, so it must have `bti c`.
# CHECK-NEXT: 00000000000103f8 <ifunc2>:
# CHECK-NEXT:    103f8:         bti     c
# CHECK-NEXT:                   adrp    x16, 0x30000
# CHECK-NEXT:                   ldr     x17, [x16, #1368]
# CHECK-NEXT:                   add     x16, x16, #1368
# CHECK-NEXT:                   br      x17
# CHECK-NEXT:                   nop

# SHARED:      <.iplt>:
# SHARED-NEXT:    bti     c

# SHARED:      <ifunc2>:
# SHARED-NEXT:    bti     c

.section ".note.gnu.property", "a"
.long 4
.long 0x10
.long 0x5
.asciz "GNU"

.long 0xc0000000 // GNU_PROPERTY_AARCH64_FEATURE_1_AND
.long 4
.long 1          // GNU_PROPERTY_AARCH64_FEATURE_1_BTI
.long 0

.text
.globl ifunc1
.type ifunc1,@gnu_indirect_function
ifunc1:
 ret

.globl ifunc2
.type ifunc2,@gnu_indirect_function
ifunc2:
  ret

.globl func1

.text
.globl _start
.type _start, %function
_start:
  bl func1
  bl ifunc1
  adrp x8, ifunc2
  add x8, x8, :lo12:ifunc2
  ret
