Mercurial > hg > CbC > CbC_llvm
view lld/test/ELF/gnu-ifunc-shared.s @ 192:d7606dcf6fce
Added tag llvm10 for changeset 0572611fdcc8
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 14 Dec 2020 18:01:34 +0900 |
parents | 0572611fdcc8 |
children | c4bab56944e8 |
line wrap: on
line source
// 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