annotate lld/test/ELF/ppc32-canonical-plt.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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 # REQUIRES: ppc
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 ## Test that we create canonical PLT entries for -no-pie.
anatofuz
parents:
diff changeset
4
anatofuz
parents:
diff changeset
5 # RUN: llvm-mc -filetype=obj -triple=powerpc %s -o %t.o
anatofuz
parents:
diff changeset
6 # RUN: llvm-mc -filetype=obj -triple=powerpc %p/Inputs/canonical-plt-pcrel.s -o %t1.o
anatofuz
parents:
diff changeset
7 # RUN: ld.lld %t1.o -o %t1.so -shared -soname=so
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 # RUN: ld.lld %t.o %t1.so -o %t
anatofuz
parents:
diff changeset
10 # RUN: llvm-readobj -r %t | FileCheck --check-prefix=REL %s
anatofuz
parents:
diff changeset
11 # RUN: llvm-readelf -S -s %t | FileCheck --check-prefix=SYM %s
anatofuz
parents:
diff changeset
12 # RUN: llvm-readelf -x .plt %t | FileCheck --check-prefix=HEX %s
anatofuz
parents:
diff changeset
13 # RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck %s
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 # REL: Relocations [
anatofuz
parents:
diff changeset
16 # REL-NEXT: .rela.plt {
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
17 # REL-NEXT: 0x10030318 R_PPC_JMP_SLOT func 0x0
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
18 # REL-NEXT: 0x1003031C R_PPC_JMP_SLOT func2 0x0
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
19 # REL-NEXT: 0x10030320 R_PPC_JMP_SLOT ifunc 0x0
150
anatofuz
parents:
diff changeset
20 # REL-NEXT: }
anatofuz
parents:
diff changeset
21 # REL-NEXT: ]
anatofuz
parents:
diff changeset
22
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
23 # SYM: .glink PROGBITS 1001022c
150
anatofuz
parents:
diff changeset
24
anatofuz
parents:
diff changeset
25 ## st_value points to the canonical PLT entry in .glink
anatofuz
parents:
diff changeset
26 # SYM: Symbol table '.dynsym'
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
27 # SYM: 1001023c 0 FUNC GLOBAL DEFAULT UND func
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
28 # SYM: 1001022c 0 FUNC GLOBAL DEFAULT UND func2
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
29 # SYM: 1001024c 0 FUNC GLOBAL DEFAULT UND ifunc
150
anatofuz
parents:
diff changeset
30 # SYM: Symbol table '.symtab'
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
31 # SYM: 1001023c 0 FUNC GLOBAL DEFAULT UND func
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
32 # SYM: 1001022c 0 FUNC GLOBAL DEFAULT UND func2
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
33 # SYM: 1001024c 0 FUNC GLOBAL DEFAULT UND ifunc
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
34
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
35 # HEX: 0x10030318 1001025c 10010260 10010264
150
anatofuz
parents:
diff changeset
36
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
37 ## Canonical PLT entry of func2.
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
38 ## 0x1003031C = 65536*4099+796
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
39 # CHECK: 1001022c <.glink>:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
40 # CHECK-NEXT: lis 11, 4099
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
41 # CHECK-NEXT: lwz 11, 796(11)
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
42 # CHECK-NEXT: mtctr 11
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
43 # CHECK-NEXT: bctr
150
anatofuz
parents:
diff changeset
44
anatofuz
parents:
diff changeset
45 ## Canonical PLT entry of func.
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
46 ## 0x10030318 = 65536*4099+792
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
47 # CHECK-NEXT: 1001023c: lis 11, 4099
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
48 # CHECK-NEXT: lwz 11, 792(11)
150
anatofuz
parents:
diff changeset
49 # CHECK-NEXT: mtctr 11
anatofuz
parents:
diff changeset
50 # CHECK-NEXT: bctr
anatofuz
parents:
diff changeset
51
anatofuz
parents:
diff changeset
52 ## Canonical PLT entry of ifunc.
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
53 ## 0x10030320 = 65536*4099+800
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
54 # CHECK-NEXT: 1001024c: lis 11, 4099
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
55 # CHECK-NEXT: lwz 11, 800(11)
150
anatofuz
parents:
diff changeset
56 # CHECK-NEXT: mtctr 11
anatofuz
parents:
diff changeset
57 # CHECK-NEXT: bctr
anatofuz
parents:
diff changeset
58
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
59 ## The 3 b instructions are referenced by .plt entries.
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
60 # CHECK-NEXT: 1001025c: b 0x10010268
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
61 # CHECK-NEXT: b 0x10010268
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
62 # CHECK-NEXT: b 0x10010268
150
anatofuz
parents:
diff changeset
63
anatofuz
parents:
diff changeset
64 ## PLTresolve of 64 bytes is at the end.
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
65 ## Operands of addis & addi: -0x1001025c = 65536*-4097-604
150
anatofuz
parents:
diff changeset
66 # CHECK-NEXT: lis 12, 0
anatofuz
parents:
diff changeset
67 # CHECK-NEXT: addis 11, 11, -4097
anatofuz
parents:
diff changeset
68 # CHECK-NEXT: lwz 0, 4(12)
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
69 # CHECK-NEXT: addi 11, 11, -604
150
anatofuz
parents:
diff changeset
70 # CHECK-NEXT: mtctr 0
anatofuz
parents:
diff changeset
71 # CHECK-NEXT: add 0, 11, 11
anatofuz
parents:
diff changeset
72 # CHECK-NEXT: lwz 12, 8(12)
anatofuz
parents:
diff changeset
73 # CHECK-NEXT: add 11, 0, 11
anatofuz
parents:
diff changeset
74 # CHECK-NEXT: bctr
anatofuz
parents:
diff changeset
75 # CHECK-COUNT-7: nop
anatofuz
parents:
diff changeset
76
anatofuz
parents:
diff changeset
77 .globl _start
anatofuz
parents:
diff changeset
78 _start:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
79 b func
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
80 lis 3, func2@ha
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
81 la 3, func2@l(3)
150
anatofuz
parents:
diff changeset
82 lis 3, func@ha
anatofuz
parents:
diff changeset
83 la 3, func@l(3)
anatofuz
parents:
diff changeset
84 lis 4, ifunc@ha
anatofuz
parents:
diff changeset
85 la 4, ifunc@l(4)