File: gotpcrelx.s

package info (click to toggle)
llvm-toolchain-20 1%3A20.1.8-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 2,111,696 kB
  • sloc: cpp: 7,438,781; ansic: 1,393,871; asm: 1,012,926; python: 241,771; f90: 86,635; objc: 75,411; lisp: 42,144; pascal: 17,286; sh: 8,596; ml: 5,082; perl: 4,730; makefile: 3,591; awk: 3,523; javascript: 2,251; xml: 892; fortran: 672
file content (159 lines) | stat: -rw-r--r-- 5,984 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
# RUN: llvm-readobj -r %t.o | FileCheck %s --check-prefixes=CHECK,COMMON
# RUN: llvm-mc -filetype=obj -triple=x86_64 -x86-relax-relocations=false %s -o %t1.o
# RUN: llvm-readobj -r %t1.o | FileCheck %s --check-prefixes=NORELAX,COMMON

# COMMON:     Relocations [
# COMMON-NEXT:  Section ({{.*}}) .rela.text {
# CHECK-NEXT:     R_X86_64_GOTPCRELX mov
# CHECK-NEXT:     R_X86_64_GOTPCRELX test
# CHECK-NEXT:     R_X86_64_GOTPCRELX adc
# CHECK-NEXT:     R_X86_64_GOTPCRELX add
# CHECK-NEXT:     R_X86_64_GOTPCRELX and
# CHECK-NEXT:     R_X86_64_GOTPCRELX cmp
# CHECK-NEXT:     R_X86_64_GOTPCRELX or
# CHECK-NEXT:     R_X86_64_GOTPCRELX sbb
# CHECK-NEXT:     R_X86_64_GOTPCRELX sub
# CHECK-NEXT:     R_X86_64_GOTPCRELX xor
# CHECK-NEXT:     R_X86_64_GOTPCRELX call
# CHECK-NEXT:     R_X86_64_GOTPCRELX jmp
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX mov
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX test
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX adc
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX add
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX and
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX cmp
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX or
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX sbb
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX sub
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX xor
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX mov
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX test
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX adc
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX add
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX and
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX cmp
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX or
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX sbb
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX sub
# CHECK-NEXT:     R_X86_64_REX_GOTPCRELX xor
# CHECK-NEXT:     R_X86_64_CODE_4_GOTPCRELX mov
# CHECK-NEXT:     R_X86_64_CODE_4_GOTPCRELX test
# CHECK-NEXT:     R_X86_64_CODE_4_GOTPCRELX adc
# CHECK-NEXT:     R_X86_64_CODE_4_GOTPCRELX add
# CHECK-NEXT:     R_X86_64_CODE_4_GOTPCRELX and
# CHECK-NEXT:     R_X86_64_CODE_4_GOTPCRELX cmp
# CHECK-NEXT:     R_X86_64_CODE_4_GOTPCRELX or
# CHECK-NEXT:     R_X86_64_CODE_4_GOTPCRELX sbb
# CHECK-NEXT:     R_X86_64_CODE_4_GOTPCRELX sub
# CHECK-NEXT:     R_X86_64_CODE_4_GOTPCRELX xor
# CHECK-NEXT:   }

# NORELAX-NEXT:     R_X86_64_GOTPCREL mov
# NORELAX-NEXT:     R_X86_64_GOTPCREL test
# NORELAX-NEXT:     R_X86_64_GOTPCREL adc
# NORELAX-NEXT:     R_X86_64_GOTPCREL add
# NORELAX-NEXT:     R_X86_64_GOTPCREL and
# NORELAX-NEXT:     R_X86_64_GOTPCREL cmp
# NORELAX-NEXT:     R_X86_64_GOTPCREL or
# NORELAX-NEXT:     R_X86_64_GOTPCREL sbb
# NORELAX-NEXT:     R_X86_64_GOTPCREL sub
# NORELAX-NEXT:     R_X86_64_GOTPCREL xor
# NORELAX-NEXT:     R_X86_64_GOTPCREL call
# NORELAX-NEXT:     R_X86_64_GOTPCREL jmp
# NORELAX-NEXT:     R_X86_64_GOTPCREL mov
# NORELAX-NEXT:     R_X86_64_GOTPCREL test
# NORELAX-NEXT:     R_X86_64_GOTPCREL adc
# NORELAX-NEXT:     R_X86_64_GOTPCREL add
# NORELAX-NEXT:     R_X86_64_GOTPCREL and
# NORELAX-NEXT:     R_X86_64_GOTPCREL cmp
# NORELAX-NEXT:     R_X86_64_GOTPCREL or
# NORELAX-NEXT:     R_X86_64_GOTPCREL sbb
# NORELAX-NEXT:     R_X86_64_GOTPCREL sub
# NORELAX-NEXT:     R_X86_64_GOTPCREL xor
# NORELAX-NEXT:     R_X86_64_GOTPCREL mov
# NORELAX-NEXT:     R_X86_64_GOTPCREL test
# NORELAX-NEXT:     R_X86_64_GOTPCREL adc
# NORELAX-NEXT:     R_X86_64_GOTPCREL add
# NORELAX-NEXT:     R_X86_64_GOTPCREL and
# NORELAX-NEXT:     R_X86_64_GOTPCREL cmp
# NORELAX-NEXT:     R_X86_64_GOTPCREL or
# NORELAX-NEXT:     R_X86_64_GOTPCREL sbb
# NORELAX-NEXT:     R_X86_64_GOTPCREL sub
# NORELAX-NEXT:     R_X86_64_GOTPCREL xor
# NORELAX-NEXT:     R_X86_64_GOTPCREL mov
# NORELAX-NEXT:     R_X86_64_GOTPCREL test
# NORELAX-NEXT:     R_X86_64_GOTPCREL adc
# NORELAX-NEXT:     R_X86_64_GOTPCREL add
# NORELAX-NEXT:     R_X86_64_GOTPCREL and
# NORELAX-NEXT:     R_X86_64_GOTPCREL cmp
# NORELAX-NEXT:     R_X86_64_GOTPCREL or
# NORELAX-NEXT:     R_X86_64_GOTPCREL sbb
# NORELAX-NEXT:     R_X86_64_GOTPCREL sub
# NORELAX-NEXT:     R_X86_64_GOTPCREL xor
# NORELAX-NEXT:   }

movl mov@GOTPCREL(%rip), %eax
test %eax, test@GOTPCREL(%rip)
adc adc@GOTPCREL(%rip), %eax
add add@GOTPCREL(%rip), %eax
and and@GOTPCREL(%rip), %eax
cmp cmp@GOTPCREL(%rip), %eax
or  or@GOTPCREL(%rip), %eax
sbb sbb@GOTPCREL(%rip), %eax
sub sub@GOTPCREL(%rip), %eax
xor xor@GOTPCREL(%rip), %eax
call *call@GOTPCREL(%rip)
jmp *jmp@GOTPCREL(%rip)

movl mov@GOTPCREL(%rip), %r8d
test %r8d, test@GOTPCREL(%rip)
adc adc@GOTPCREL(%rip), %r8d
add add@GOTPCREL(%rip), %r8d
and and@GOTPCREL(%rip), %r8d
cmp cmp@GOTPCREL(%rip), %r8d
or  or@GOTPCREL(%rip), %r8d
sbb sbb@GOTPCREL(%rip), %r8d
sub sub@GOTPCREL(%rip), %r8d
xor xor@GOTPCREL(%rip), %r8d

movq mov@GOTPCREL(%rip), %rax
test %rax, test@GOTPCREL(%rip)
adc adc@GOTPCREL(%rip), %rax
add add@GOTPCREL(%rip), %rax
and and@GOTPCREL(%rip), %rax
cmp cmp@GOTPCREL(%rip), %rax
or  or@GOTPCREL(%rip), %rax
sbb sbb@GOTPCREL(%rip), %rax
sub sub@GOTPCREL(%rip), %rax
xor xor@GOTPCREL(%rip), %rax

movq mov@GOTPCREL(%rip), %r16
test %r16, test@GOTPCREL(%rip)
adc adc@GOTPCREL(%rip), %r16
add add@GOTPCREL(%rip), %r16
and and@GOTPCREL(%rip), %r16
cmp cmp@GOTPCREL(%rip), %r16
or  or@GOTPCREL(%rip), %r16
sbb sbb@GOTPCREL(%rip), %r16
sub sub@GOTPCREL(%rip), %r16
xor xor@GOTPCREL(%rip), %r16

# COMMON-NEXT:   Section ({{.*}}) .rela.norelax {
# COMMON-NEXT:     R_X86_64_GOTPCREL mov 0x0
# COMMON-NEXT:     R_X86_64_GOTPCREL mov 0xFFFFFFFFFFFFFFFD
# COMMON-NEXT:     R_X86_64_GOTPCREL mov 0xFFFFFFFFFFFFFFFC
# COMMON-NEXT:     R_X86_64_GOTPCREL mov 0xFFFFFFFFFFFFFFFD
# COMMON-NEXT:   }
# COMMON-NEXT: ]

.section .norelax,"ax",@progbits
## Clang may emit this expression to load the high 32-bit of the GOT entry.
## Don't emit R_X86_64_GOTPCRELX.
movl mov@GOTPCREL+4(%rip), %eax
## Don't emit R_X86_64_GOTPCRELX.
movq mov@GOTPCREL+1(%rip), %rax
## We could emit R_X86_64_GOTPCRELX, but it is probably unnecessary.
movl mov@GOTPCREL+0(%rip), %eax
## Don't emit R_X86_64_GOTPCRELX.
movq mov@GOTPCREL+1(%rip), %r16