annotate lld/test/ELF/hexagon-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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 # REQUIRES: hexagon
anatofuz
parents:
diff changeset
2 # RUN: llvm-mc -mno-fixup -filetype=obj -triple=hexagon-unknown-elf %s -o %t.o
anatofuz
parents:
diff changeset
3 # RUN: llvm-mc -filetype=obj -triple=hexagon-unknown-elf %S/Inputs/hexagon-shared.s -o %t2.o
anatofuz
parents:
diff changeset
4 # RUN: ld.lld -shared %t2.o -soname so -o %t3.so
anatofuz
parents:
diff changeset
5 # RUN: ld.lld -shared %t.o %t3.so -o %t4.so
anatofuz
parents:
diff changeset
6 # RUN: ld.lld -Bsymbolic -shared %t.o %t3.so -o %t5.so
anatofuz
parents:
diff changeset
7 # RUN: llvm-objdump -d -j .plt %t4.so | FileCheck --check-prefix=PLT %s
anatofuz
parents:
diff changeset
8 # RUN: llvm-objdump -d -j .text %t4.so | FileCheck --check-prefix=TEXT %s
anatofuz
parents:
diff changeset
9 # RUN: llvm-objdump -D -j .got %t4.so | FileCheck --check-prefix=GOT %s
anatofuz
parents:
diff changeset
10 # RUN: llvm-readelf -r %t4.so | FileCheck --check-prefix=RELO %s
anatofuz
parents:
diff changeset
11 # RUN: llvm-readelf -r %t5.so | FileCheck --check-prefix=SYMBOLIC %s
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13 .global _start, foo, hidden_symbol
anatofuz
parents:
diff changeset
14 .hidden hidden_symbol
anatofuz
parents:
diff changeset
15 _start:
anatofuz
parents:
diff changeset
16 # When -Bsymbolic is specified calls to locally resolvables should
anatofuz
parents:
diff changeset
17 # not generate a plt.
anatofuz
parents:
diff changeset
18 call ##foo
anatofuz
parents:
diff changeset
19 # Calls to hidden_symbols should not trigger a plt.
anatofuz
parents:
diff changeset
20 call ##hidden_symbol
anatofuz
parents:
diff changeset
21
anatofuz
parents:
diff changeset
22 # _HEX_32_PCREL
anatofuz
parents:
diff changeset
23 .word _DYNAMIC - .
anatofuz
parents:
diff changeset
24 call ##bar
anatofuz
parents:
diff changeset
25
anatofuz
parents:
diff changeset
26 # R_HEX_PLT_B22_PCREL
anatofuz
parents:
diff changeset
27 call bar@PLT
anatofuz
parents:
diff changeset
28 # R_HEX_B15_PCREL_X
anatofuz
parents:
diff changeset
29 if (p0) jump bar
anatofuz
parents:
diff changeset
30 # R_HEX_B9_PCREL_X
anatofuz
parents:
diff changeset
31 { r0 = #0; jump bar }
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 # R_HEX_GOT_11_X and R_HEX_GOT_32_6_X
anatofuz
parents:
diff changeset
34 r2=add(pc,##_GLOBAL_OFFSET_TABLE_@PCREL)
anatofuz
parents:
diff changeset
35 r0 = memw (r2+##bar@GOT)
anatofuz
parents:
diff changeset
36 jumpr r0
anatofuz
parents:
diff changeset
37
anatofuz
parents:
diff changeset
38 # R_HEX_GOT_16_X
anatofuz
parents:
diff changeset
39 r0 = add(r1,##bar@GOT)
anatofuz
parents:
diff changeset
40
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
41 # R_HEX_GOT_16_X, duplex
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
42 { r0 = add(r0,##bar@GOT)
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
43 memw(r0) = r2 }
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
44
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
45
150
anatofuz
parents:
diff changeset
46 # foo is local so no plt will be generated
anatofuz
parents:
diff changeset
47 foo:
anatofuz
parents:
diff changeset
48 jumpr lr
anatofuz
parents:
diff changeset
49
anatofuz
parents:
diff changeset
50 hidden_symbol:
anatofuz
parents:
diff changeset
51 jumpr lr
anatofuz
parents:
diff changeset
52
anatofuz
parents:
diff changeset
53 # R_HEX_32
anatofuz
parents:
diff changeset
54 .data
anatofuz
parents:
diff changeset
55 .global var
anatofuz
parents:
diff changeset
56 .type var,@object
anatofuz
parents:
diff changeset
57 .p2align 2
anatofuz
parents:
diff changeset
58 var:
anatofuz
parents:
diff changeset
59 .word 10
anatofuz
parents:
diff changeset
60 .size var, 4
anatofuz
parents:
diff changeset
61 .global pvar
anatofuz
parents:
diff changeset
62 .type pvar,@object
anatofuz
parents:
diff changeset
63 pvar:
anatofuz
parents:
diff changeset
64 .word var
anatofuz
parents:
diff changeset
65 .size pvar, 4
anatofuz
parents:
diff changeset
66
anatofuz
parents:
diff changeset
67
anatofuz
parents:
diff changeset
68 # PLT: { immext(#131264
anatofuz
parents:
diff changeset
69 # PLT-NEXT: r28 = add(pc,##131268) }
anatofuz
parents:
diff changeset
70 # PLT-NEXT: { r14 -= add(r28,#16)
anatofuz
parents:
diff changeset
71 # PLT-NEXT: r15 = memw(r28+#8)
anatofuz
parents:
diff changeset
72 # PLT-NEXT: r28 = memw(r28+#4) }
anatofuz
parents:
diff changeset
73 # PLT-NEXT: { r14 = asr(r14,#2)
anatofuz
parents:
diff changeset
74 # PLT-NEXT: jumpr r28 }
anatofuz
parents:
diff changeset
75 # PLT-NEXT: { trap0(#219) }
anatofuz
parents:
diff changeset
76 # PLT-NEXT: immext(#131200)
anatofuz
parents:
diff changeset
77 # PLT-NEXT: r14 = add(pc,##131252) }
anatofuz
parents:
diff changeset
78 # PLT-NEXT: r28 = memw(r14+#0) }
anatofuz
parents:
diff changeset
79 # PLT-NEXT: jumpr r28 }
anatofuz
parents:
diff changeset
80
anatofuz
parents:
diff changeset
81 # TEXT: 8c 00 01 00 0001008c
anatofuz
parents:
diff changeset
82 # TEXT: { call 0x102d0 }
anatofuz
parents:
diff changeset
83 # TEXT: if (p0) jump:nt 0x102d0
anatofuz
parents:
diff changeset
84 # TEXT: r0 = #0 ; jump 0x102d0
anatofuz
parents:
diff changeset
85 # TEXT: r0 = add(r1,##-65548)
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
86 # TEXT: r0 = add(r0,##-65548); memw(r0+#0) = r2 }
150
anatofuz
parents:
diff changeset
87
anatofuz
parents:
diff changeset
88 # GOT: .got:
anatofuz
parents:
diff changeset
89 # GOT: 00 00 00 00 00000000 <unknown>
anatofuz
parents:
diff changeset
90
anatofuz
parents:
diff changeset
91 # RELO: R_HEX_GLOB_DAT
anatofuz
parents:
diff changeset
92 # RELO: R_HEX_32
anatofuz
parents:
diff changeset
93 # RELO: Relocation section '.rela.plt' at offset 0x22c contains 2 entries:
anatofuz
parents:
diff changeset
94 # RELO: R_HEX_JMP_SLOT {{.*}} foo
anatofuz
parents:
diff changeset
95 # RELO-NEXT: R_HEX_JMP_SLOT {{.*}} bar
anatofuz
parents:
diff changeset
96 # RELO-NOT: R_HEX_JMP_SLOT {{.*}} hidden
anatofuz
parents:
diff changeset
97
anatofuz
parents:
diff changeset
98 # Make sure that no PLT is generated for a local call.
anatofuz
parents:
diff changeset
99 # SYMBOLIC: Relocation section '.rela.plt' at offset 0x22c contains 1 entries:
anatofuz
parents:
diff changeset
100 # SYMBOLIC: R_HEX_JMP_SLOT {{.*}} bar
anatofuz
parents:
diff changeset
101 # SYMBOLIC-NOT: R_HEX_JMP_SLOT {{.*}} foo