annotate lld/test/ELF/ppc64-tls-ld-le.s @ 173:0572611fdcc8 llvm10 llvm12

reorgnization done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 11:55:54 +0900
parents 1d019706d866
children
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 // RUN: llvm-mc -filetype=obj -triple=powerpc64le-unknown-linux %s -o %t.o
anatofuz
parents:
diff changeset
4 // RUN: llvm-readelf -r %t.o | FileCheck --check-prefix=InputRelocs %s
anatofuz
parents:
diff changeset
5 // RUN: ld.lld %t.o -o %t
anatofuz
parents:
diff changeset
6 // RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=Dis %s
anatofuz
parents:
diff changeset
7 // RUN: llvm-readelf -r %t | FileCheck --check-prefix=OutputRelocs %s
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 // RUN: llvm-mc -filetype=obj -triple=powerpc64-unknown-linux %s -o %t.o
anatofuz
parents:
diff changeset
10 // RUN: llvm-readelf -r %t.o | FileCheck --check-prefix=InputRelocs %s
anatofuz
parents:
diff changeset
11 // RUN: ld.lld %t.o -o %t
anatofuz
parents:
diff changeset
12 // RUN: llvm-objdump -d --no-show-raw-insn %t | FileCheck --check-prefix=Dis %s
anatofuz
parents:
diff changeset
13 // RUN: llvm-readelf -r %t | FileCheck --check-prefix=OutputRelocs %s
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 .text
anatofuz
parents:
diff changeset
16 .abiversion 2
anatofuz
parents:
diff changeset
17 .globl _start # -- Begin function _start
anatofuz
parents:
diff changeset
18 .p2align 4
anatofuz
parents:
diff changeset
19 .type _start,@function
anatofuz
parents:
diff changeset
20 _start: # @_start
anatofuz
parents:
diff changeset
21 .Lfunc_begin0:
anatofuz
parents:
diff changeset
22 .Lfunc_gep0:
anatofuz
parents:
diff changeset
23 addis 2, 12, .TOC.-.Lfunc_gep0@ha
anatofuz
parents:
diff changeset
24 addi 2, 2, .TOC.-.Lfunc_gep0@l
anatofuz
parents:
diff changeset
25 .Lfunc_lep0:
anatofuz
parents:
diff changeset
26 .localentry _start, .Lfunc_lep0-.Lfunc_gep0
anatofuz
parents:
diff changeset
27 # %bb.0: # %entry
anatofuz
parents:
diff changeset
28 mflr 0
anatofuz
parents:
diff changeset
29 std 31, -8(1)
anatofuz
parents:
diff changeset
30 std 0, 16(1)
anatofuz
parents:
diff changeset
31 stdu 1, -64(1)
anatofuz
parents:
diff changeset
32 mr 31, 1
anatofuz
parents:
diff changeset
33 std 30, 48(31) # 8-byte Folded Spill
anatofuz
parents:
diff changeset
34 li 3, 0
anatofuz
parents:
diff changeset
35 stw 3, 44(31)
anatofuz
parents:
diff changeset
36 addis 3, 2, a@got@tlsld@ha
anatofuz
parents:
diff changeset
37 addi 3, 3, a@got@tlsld@l
anatofuz
parents:
diff changeset
38 bl __tls_get_addr(a@tlsld)
anatofuz
parents:
diff changeset
39 nop
anatofuz
parents:
diff changeset
40 addis 3, 3, a@dtprel@ha
anatofuz
parents:
diff changeset
41 addi 3, 3, a@dtprel@l
anatofuz
parents:
diff changeset
42 lwz 30, 0(3)
anatofuz
parents:
diff changeset
43 extsw 3, 30
anatofuz
parents:
diff changeset
44 ld 30, 48(31) # 8-byte Folded Reload
anatofuz
parents:
diff changeset
45 addi 1, 1, 64
anatofuz
parents:
diff changeset
46 ld 0, 16(1)
anatofuz
parents:
diff changeset
47 ld 31, -8(1)
anatofuz
parents:
diff changeset
48 mtlr 0
anatofuz
parents:
diff changeset
49 blr
anatofuz
parents:
diff changeset
50 .long 0
anatofuz
parents:
diff changeset
51 .quad 0
anatofuz
parents:
diff changeset
52 .Lfunc_end0:
anatofuz
parents:
diff changeset
53 .size _start, .Lfunc_end0-.Lfunc_begin0
anatofuz
parents:
diff changeset
54 # -- End function
anatofuz
parents:
diff changeset
55
anatofuz
parents:
diff changeset
56 .type a,@object # @a
anatofuz
parents:
diff changeset
57 .section .tdata,"awT",@progbits
anatofuz
parents:
diff changeset
58 .p2align 2
anatofuz
parents:
diff changeset
59 a:
anatofuz
parents:
diff changeset
60 .long 2 # 0x2
anatofuz
parents:
diff changeset
61 .size a, 4
anatofuz
parents:
diff changeset
62
anatofuz
parents:
diff changeset
63 // Verify that the input has local-dynamic tls relocation types
anatofuz
parents:
diff changeset
64 // InputRelocs: Relocation section '.rela.text'
anatofuz
parents:
diff changeset
65 // InputRelocs: R_PPC64_GOT_TLSLD16_HA {{0+}} a + 0
anatofuz
parents:
diff changeset
66 // InputRelocs: R_PPC64_GOT_TLSLD16_LO {{0+}} a + 0
anatofuz
parents:
diff changeset
67 // InputRelocs: R_PPC64_TLSLD {{0+}} a + 0
anatofuz
parents:
diff changeset
68
anatofuz
parents:
diff changeset
69 // Verify that the local-dynamic sequence is relaxed to local exec.
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
70 // Dis: <_start>:
150
anatofuz
parents:
diff changeset
71 // Dis: nop
anatofuz
parents:
diff changeset
72 // Dis: addis 3, 13, 0
anatofuz
parents:
diff changeset
73 // Dis: nop
anatofuz
parents:
diff changeset
74 // Dis: addi 3, 3, 4096
anatofuz
parents:
diff changeset
75
anatofuz
parents:
diff changeset
76 // #ha(a@dtprel) --> (0x0 -0x8000 + 0x8000) >> 16 = 0
anatofuz
parents:
diff changeset
77 // #lo(a@dtprel) --> (0x0 -0x8000) = -0x8000 = -32768
anatofuz
parents:
diff changeset
78 // Dis: addis 3, 3, 0
anatofuz
parents:
diff changeset
79 // Dis: addi 3, 3, -32768
anatofuz
parents:
diff changeset
80
anatofuz
parents:
diff changeset
81 // Verify that no local-dynamic relocations exist for the dynamic linker.
anatofuz
parents:
diff changeset
82 // OutputRelocs-NOT: R_PPC64_DTPMOD64