// REQUIRES: x86

/// For non-preemptable ifunc, place ifunc PLT entries after regular PLT entries.

// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
// RUN: ld.lld --shared -o %t.so %t.o
// RUN: llvm-objdump -d --no-show-raw-insn %t.so | FileCheck %s --check-prefix=DISASM
// RUN: llvm-readobj -r %t.so | FileCheck %s

// Check that an IRELATIVE relocation is used for a non-preemptible ifunc
// handler and a JUMP_SLOT is used for a preemptible ifunc
// DISASM: Disassembly of section .text:
// DISASM-EMPTY:
// DISASM-NEXT: <fct>:
// DISASM-NEXT:     1308:       retq
// DISASM:     <fct2>:
// DISASM-NEXT:     1309:       retq
// DISASM:     <f1>:
// DISASM-NEXT:     130a:       callq   0x1350
// DISASM-NEXT:     130f:       callq   0x1330
// DISASM-NEXT:     1314:       callq   0x1340
// DISASM-NEXT:     1319:       retq
// DISASM:     <f2>:
// DISASM-NEXT:     131a:       retq
// DISASM-EMPTY:
// DISASM-NEXT: Disassembly of section .plt:
// DISASM-EMPTY:
// DISASM-NEXT: <.plt>:
// DISASM-NEXT:     1320:       pushq   8482(%rip)
// DISASM-NEXT:     1326:       jmpq    *8484(%rip)
// DISASM-NEXT:     132c:       nopl    (%rax)
// DISASM-EMPTY:
// DISASM-NEXT:   <fct2@plt>:
// DISASM-NEXT:     1330:       jmpq    *8482(%rip)
// DISASM-NEXT:     1336:       pushq   $0
// DISASM-NEXT:     133b:       jmp     0x1320 <.plt>
// DISASM-EMPTY:
// DISASM-NEXT:   <f2@plt>:
// DISASM-NEXT:     1340:       jmpq    *8474(%rip)
// DISASM-NEXT:     1346:       pushq   $1
// DISASM-NEXT:     134b:       jmp     0x1320 <.plt>
// DISASM:      Disassembly of section .iplt:
// DISASM-EMPTY:
// DISASM:      <.iplt>:
// DISASM-NEXT:     1350:       jmpq    *8466(%rip)
// DISASM-NEXT:     1356:       pushq   $0
// DISASM-NEXT:     135b:       jmp     0x1320 <.plt>

// CHECK: Relocations [
// CHECK-NEXT:   Section (5) .rela.dyn {
// CHECK-NEXT:     0x3468 R_X86_64_IRELATIVE - 0x1308
// CHECK-NEXT:   }
// CHECK-NEXT:   Section (6) .rela.plt {
// CHECK-NEXT:     0x3458 R_X86_64_JUMP_SLOT fct2 0x0
// CHECK-NEXT:     0x3460 R_X86_64_JUMP_SLOT f2 0x0
// CHECK-NEXT:   }

 // Hidden expect IRELATIVE
 .globl fct
 .hidden fct
 .type  fct, STT_GNU_IFUNC
fct:
 ret

 // Not hidden expect JUMP_SLOT
 .globl fct2
 .type  fct2, STT_GNU_IFUNC
fct2:
 ret

 .globl f1
 .type f1, @function
f1:
 call fct
 call fct2
 call f2@PLT
 ret

 .globl f2
 .type f2, @function
f2:
 ret
