]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/ELF/aarch64-tstbr14-reloc.s
Vendor import of lld trunk r338150:
[FreeBSD/FreeBSD.git] / test / ELF / aarch64-tstbr14-reloc.s
1 # REQUIRES: aarch64
2 # RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-freebsd %p/Inputs/aarch64-tstbr14-reloc.s -o %t1
3 # RUN: llvm-mc -filetype=obj -triple=aarch64-unknown-freebsd %s -o %t2
4 # RUN: ld.lld %t1 %t2 -o %t
5 # RUN: llvm-objdump -d %t | FileCheck %s
6 # RUN: ld.lld -shared %t1 %t2 -o %t3
7 # RUN: llvm-objdump -d %t3 | FileCheck -check-prefix=DSO %s
8 # RUN: llvm-readobj -s -r %t3 | FileCheck -check-prefix=DSOREL %s
9
10 # 0x1101c - 28 = 0x20000
11 # 0x11020 - 16 = 0x20010
12 # 0x11024 - 36 = 0x20000
13 # 0x11028 - 24 = 0x20010
14 # CHECK:      Disassembly of section .text:
15 # CHECK-NEXT: _foo:
16 # CHECK-NEXT:  20000: {{.*}} nop
17 # CHECK-NEXT:  20004: {{.*}} nop
18 # CHECK-NEXT:  20008: {{.*}} nop
19 # CHECK-NEXT:  2000c: {{.*}} nop
20 # CHECK:      _bar:
21 # CHECK-NEXT:  20010: {{.*}} nop
22 # CHECK-NEXT:  20014: {{.*}} nop
23 # CHECK-NEXT:  20018: {{.*}} nop
24 # CHECK:      _start:
25 # CHECK-NEXT:  2001c: {{.*}} tbnz w3, #15, #-28
26 # CHECK-NEXT:  20020: {{.*}} tbnz w3, #15, #-16
27 # CHECK-NEXT:  20024: {{.*}} tbz x6, #45, #-36
28 # CHECK-NEXT:  20028: {{.*}} tbz x6, #45, #-24
29
30 #DSOREL:      Section {
31 #DSOREL:        Index:
32 #DSOREL:        Name: .got.plt
33 #DSOREL-NEXT:   Type: SHT_PROGBITS
34 #DSOREL-NEXT:   Flags [
35 #DSOREL-NEXT:     SHF_ALLOC
36 #DSOREL-NEXT:     SHF_WRITE
37 #DSOREL-NEXT:   ]
38 #DSOREL-NEXT:   Address: 0x20000
39 #DSOREL-NEXT:   Offset: 0x20000
40 #DSOREL-NEXT:   Size: 40
41 #DSOREL-NEXT:   Link: 0
42 #DSOREL-NEXT:   Info: 0
43 #DSOREL-NEXT:   AddressAlignment: 8
44 #DSOREL-NEXT:   EntrySize: 0
45 #DSOREL-NEXT:  }
46 #DSOREL:      Relocations [
47 #DSOREL-NEXT:  Section ({{.*}}) .rela.plt {
48 #DSOREL-NEXT:    0x20018 R_AARCH64_JUMP_SLOT _foo
49 #DSOREL-NEXT:    0x20020 R_AARCH64_JUMP_SLOT _bar
50 #DSOREL-NEXT:  }
51 #DSOREL-NEXT:]
52
53 #DSO:      Disassembly of section .text:
54 #DSO-NEXT: _foo:
55 #DSO-NEXT:  10000: {{.*}} nop
56 #DSO-NEXT:  10004: {{.*}} nop
57 #DSO-NEXT:  10008: {{.*}} nop
58 #DSO-NEXT:  1000c: {{.*}} nop
59 #DSO:      _bar:
60 #DSO-NEXT:  10010: {{.*}} nop
61 #DSO-NEXT:  10014: {{.*}} nop
62 #DSO-NEXT:  10018: {{.*}} nop
63 #DSO:      _start:
64 # 0x1001c + 52 = 0x10050 = PLT[1]
65 # 0x10020 + 64 = 0x10060 = PLT[2]
66 # 0x10024 + 44 = 0x10050 = PLT[1]
67 # 0x10028 + 56 = 0x10060 = PLT[2]
68 #DSO-NEXT:  1001c: {{.*}} tbnz w3, #15, #52
69 #DSO-NEXT:  10020: {{.*}} tbnz w3, #15, #64
70 #DSO-NEXT:  10024: {{.*}} tbz x6, #45, #44
71 #DSO-NEXT:  10028: {{.*}} tbz x6, #45, #56
72 #DSO-NEXT: Disassembly of section .plt:
73 #DSO-NEXT: .plt:
74 #DSO-NEXT:  10030: {{.*}} stp x16, x30, [sp, #-16]!
75 #DSO-NEXT:  10034: {{.*}} adrp x16, #65536
76 #DSO-NEXT:  10038: {{.*}} ldr x17, [x16, #16]
77 #DSO-NEXT:  1003c: {{.*}} add x16, x16, #16
78 #DSO-NEXT:  10040: {{.*}} br x17
79 #DSO-NEXT:  10044: {{.*}} nop
80 #DSO-NEXT:  10048: {{.*}} nop
81 #DSO-NEXT:  1004c: {{.*}} nop
82 #DSO-NEXT:  10050: {{.*}} adrp x16, #65536
83 #DSO-NEXT:  10054: {{.*}} ldr x17, [x16, #24]
84 #DSO-NEXT:  10058: {{.*}} add x16, x16, #24
85 #DSO-NEXT:  1005c: {{.*}} br x17
86 #DSO-NEXT:  10060: {{.*}} adrp x16, #65536
87 #DSO-NEXT:  10064: {{.*}} ldr x17, [x16, #32]
88 #DSO-NEXT:  10068: {{.*}} add x16, x16, #32
89 #DSO-NEXT:  1006c: {{.*}} br x17
90
91 .globl _start
92 _start:
93  tbnz w3, #15, _foo
94  tbnz w3, #15, _bar
95  tbz x6, #45, _foo
96  tbz x6, #45, _bar