[JITLink][arm64] Support arm64e JIT'd code (initially enabled for MachO only).
[llvm-project.git] / lld / test / ELF / systemz-ifunc-nonpreemptible.s
blob892bbde8d9c7810e1f68d6bb67b06d371b508743
1 # REQUIRES: systemz
2 # RUN: llvm-mc -filetype=obj -triple=s390x-none-linux-gnu %s -o %t.o
3 # RUN: ld.lld -static %t.o -o %t
4 # RUN: ld.lld -static %t.o -o %t.apply --apply-dynamic-relocs
5 # RUN: llvm-readelf --section-headers --relocations --symbols %t | FileCheck %s
6 # RUN: llvm-readelf -x .got.plt %t | FileCheck %s --check-prefix=NO-APPLY-RELOC
7 # RUN: llvm-readelf -x .got.plt %t.apply | FileCheck %s --check-prefix=APPLY-RELOC
8 # RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %t | FileCheck %s --check-prefix=DISASM
10 # CHECK: Section Headers:
11 # CHECK-NEXT: [Nr] Name Type Address Off Size ES Flg Lk Inf Al
12 # CHECK-NEXT: [ 0] NULL 0000000000000000 000000 000000 00 0 0 0
13 # CHECK-NEXT: [ 1] .rela.dyn RELA 0000000001000158 000158 000030 18 A 0 0 8
14 # CHECK-NEXT: [ 2] .text PROGBITS 0000000001001188 000188 00001c 00 AX 0 0 4
15 # CHECK-NEXT: [ 3] .iplt PROGBITS 00000000010011b0 0001b0 000040 00 AX 0 0 16
16 # CHECK-NEXT: [ 4] .got.plt PROGBITS 00000000010021f0 0001f0 000010 00 WA 0 0 8
18 # CHECK: Relocation section '.rela.dyn' at offset 0x158 contains 2 entries:
19 # CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
20 # CHECK-NEXT: 00000000010021f0 000000000000003d R_390_IRELATIVE 1001188
21 # CHECK-NEXT: 00000000010021f8 000000000000003d R_390_IRELATIVE 100118a
23 # CHECK: Symbol table '.symtab' contains 6 entries:
24 # CHECK-NEXT: Num: Value Size Type Bind Vis Ndx Name
25 # CHECK-NEXT: 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
26 # CHECK-NEXT: 1: 0000000001000158 0 NOTYPE LOCAL HIDDEN 1 __rela_iplt_start
27 # CHECK-NEXT: 2: 0000000001000188 0 NOTYPE LOCAL HIDDEN 1 __rela_iplt_end
28 # CHECK-NEXT: 3: 0000000001001188 0 IFUNC GLOBAL DEFAULT 2 foo
29 # CHECK-NEXT: 4: 000000000100118a 0 IFUNC GLOBAL DEFAULT 2 bar
30 # CHECK-NEXT: 5: 000000000100118c 0 NOTYPE GLOBAL DEFAULT 2 _start
32 # NO-APPLY-RELOC-LABEL: Hex dump of section '.got.plt':
33 # NO-APPLY-RELOC-NEXT: 0x010021f0 00000000 00000000 00000000 00000000
34 # NO-APPLY-RELOC-EMPTY:
36 # APPLY-RELOC-LABEL: Hex dump of section '.got.plt':
37 # APPLY-RELOC-NEXT: 0x010021f0 00000000 01001188 00000000 0100118a
38 # APPLY-RELOC-EMPTY:
40 # DISASM: Disassembly of section .text:
41 # DISASM: 0000000001001188 <foo>:
42 # DISASM-NEXT: br %r14
43 # DISASM: 000000000100118a <bar>:
44 # DISASM-NEXT: br %r14
45 # DISASM: 000000000100118c <_start>:
46 # DISASM-NEXT: brasl %r14, 0x10011b0
47 # DISASM-NEXT: brasl %r14, 0x10011d0
48 # DISASM-NEXT: larl %r2, 0x1000158
49 # DISASM-NEXT: larl %r2, 0x1000188
50 # DISASM: Disassembly of section .iplt:
51 # DISASM: <.iplt>:
52 # DISASM: 10011b0: larl %r1, 0x10021f0
53 # DISASM-NEXT: 10011b6: lg %r1, 0(%r1)
54 # DISASM-NEXT: 10011bc: br %r1
55 # DISASM: 10011d0: larl %r1, 0x10021f8
56 # DISASM-NEXT: 10011d6: lg %r1, 0(%r1)
57 # DISASM-NEXT: 10011dc: br %r1
59 .text
60 .type foo STT_GNU_IFUNC
61 .globl foo
62 foo:
63 br %r14
65 .type bar STT_GNU_IFUNC
66 .globl bar
67 bar:
68 br %r14
70 .globl _start
71 _start:
72 brasl %r14, foo@plt
73 brasl %r14, bar@plt
74 larl %r2, __rela_iplt_start
75 larl %r2, __rela_iplt_end