File: systemz-ifunc-nonpreemptible.s

package info (click to toggle)
llvm-toolchain-18 1%3A18.1.8-18
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 1,908,340 kB
  • sloc: cpp: 6,667,937; ansic: 1,440,452; asm: 883,619; python: 230,549; objc: 76,880; f90: 74,238; lisp: 35,989; pascal: 16,571; sh: 10,229; perl: 7,459; ml: 5,047; awk: 3,523; makefile: 2,987; javascript: 2,149; xml: 892; fortran: 649; cs: 573
file content (75 lines) | stat: -rw-r--r-- 3,425 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# REQUIRES: systemz
# RUN: llvm-mc -filetype=obj -triple=s390x-none-linux-gnu %s -o %t.o
# RUN: ld.lld -static %t.o -o %t
# RUN: ld.lld -static %t.o -o %t.apply --apply-dynamic-relocs
# RUN: llvm-readelf --section-headers --relocations --symbols %t | FileCheck %s
# RUN: llvm-readelf -x .got.plt %t | FileCheck %s --check-prefix=NO-APPLY-RELOC
# RUN: llvm-readelf -x .got.plt %t.apply | FileCheck %s --check-prefix=APPLY-RELOC
# RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %t | FileCheck %s --check-prefix=DISASM

# CHECK:      Section Headers:
# CHECK-NEXT:  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al
# CHECK-NEXT:  [ 0]                   NULL            0000000000000000 000000 000000 00      0   0  0
# CHECK-NEXT:  [ 1] .rela.dyn         RELA            0000000001000158 000158 000030 18  AI  0   4  8
# CHECK-NEXT:  [ 2] .text             PROGBITS        0000000001001188 000188 00001c 00  AX  0   0  4
# CHECK-NEXT:  [ 3] .iplt             PROGBITS        00000000010011b0 0001b0 000040 00  AX  0   0 16
# CHECK-NEXT:  [ 4] .got.plt          PROGBITS        00000000010021f0 0001f0 000010 00  WA  0   0  8

# CHECK:      Relocation section '.rela.dyn' at offset 0x158 contains 2 entries:
# CHECK-NEXT:     Offset             Info             Type               Symbol's Value  Symbol's Name + Addend
# CHECK-NEXT: 00000000010021f0  000000000000003d R_390_IRELATIVE                   1001188
# CHECK-NEXT: 00000000010021f8  000000000000003d R_390_IRELATIVE                   100118a

# CHECK:      Symbol table '.symtab' contains 6 entries:
# CHECK-NEXT:   Num:    Value          Size Type    Bind   Vis       Ndx Name
# CHECK-NEXT:     0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT   UND
# CHECK-NEXT:     1: 0000000001000158     0 NOTYPE  LOCAL  HIDDEN      1 __rela_iplt_start
# CHECK-NEXT:     2: 0000000001000188     0 NOTYPE  LOCAL  HIDDEN      1 __rela_iplt_end
# CHECK-NEXT:     3: 0000000001001188     0 IFUNC   GLOBAL DEFAULT     2 foo
# CHECK-NEXT:     4: 000000000100118a     0 IFUNC   GLOBAL DEFAULT     2 bar
# CHECK-NEXT:     5: 000000000100118c     0 NOTYPE  GLOBAL DEFAULT     2 _start

# NO-APPLY-RELOC-LABEL:  Hex dump of section '.got.plt':
# NO-APPLY-RELOC-NEXT:     0x010021f0 00000000 00000000 00000000 00000000
# NO-APPLY-RELOC-EMPTY:

# APPLY-RELOC-LABEL:  Hex dump of section '.got.plt':
# APPLY-RELOC-NEXT:     0x010021f0 00000000 01001188 00000000 0100118a
# APPLY-RELOC-EMPTY:

# DISASM: Disassembly of section .text:
# DISASM: 0000000001001188 <foo>:
# DISASM-NEXT:  br      %r14
# DISASM: 000000000100118a <bar>:
# DISASM-NEXT:  br      %r14
# DISASM: 000000000100118c  <_start>:
# DISASM-NEXT:  brasl   %r14, 0x10011b0
# DISASM-NEXT:  brasl   %r14, 0x10011d0
# DISASM-NEXT:  larl    %r2, 0x1000158
# DISASM-NEXT:  larl    %r2, 0x1000188
# DISASM: Disassembly of section .iplt:
# DISASM: <.iplt>:
# DISASM:        10011b0:       larl    %r1, 0x10021f0
# DISASM-NEXT:   10011b6:       lg      %r1, 0(%r1)
# DISASM-NEXT:   10011bc:       br      %r1
# DISASM:        10011d0:       larl    %r1, 0x10021f8
# DISASM-NEXT:   10011d6:       lg      %r1, 0(%r1)
# DISASM-NEXT:   10011dc:       br      %r1

.text
.type foo STT_GNU_IFUNC
.globl foo
foo:
 br %r14

.type bar STT_GNU_IFUNC
.globl bar
bar:
 br %r14

.globl _start
_start:
 brasl %r14, foo@plt
 brasl %r14, bar@plt
 larl %r2, __rela_iplt_start
 larl %r2, __rela_iplt_end