18
18
movl bar, %edx # R_X86_64_32S
19
19
movq bar, %rdx # R_X86_64_32S
20
20
.long bar # R_X86_64_32
21
- leaq foo@GOTTPOFF(%rip ), %rax # R_X86_64_GOTTPOFF
22
- movq foo@GOTTPOFF(%rip ), %r31 # R_X86_64_CODE_4_GOTTPOFF
23
- addq foo@GOTTPOFF(%rip ), %r31 # R_X86_64_CODE_4_GOTTPOFF
24
- # NDD
25
- addq %r8 , foo@GOTTPOFF(%rip ), %r16 # R_X86_64_CODE_6_GOTTPOFF
26
- addq foo@GOTTPOFF(%rip ), %rax , %r12 # R_X86_64_CODE_6_GOTTPOFF
27
- # NDD + NF
28
- {nf} addq %r8 , foo@GOTTPOFF(%rip ), %r16 # R_X86_64_CODE_6_GOTTPOFF
29
- {nf} addq foo@GOTTPOFF(%rip ), %rax , %r12 # R_X86_64_CODE_6_GOTTPOFF
30
- # NF
31
- {nf} addq foo@GOTTPOFF(%rip ), %r12 # R_X86_64_CODE_6_GOTTPOFF
32
-
33
- leaq foo@TLSGD(%rip ), %rax # R_X86_64_TLSGD
34
- leaq foo@TPOFF(%rax ), %rax # R_X86_64_TPOFF32
35
- leaq foo@TLSLD(%rip ), %rdi # R_X86_64_TLSLD
36
- leaq foo@dtpoff(%rax ), %rcx # R_X86_64_DTPOFF32
37
- movabs foo@GOT, %rax # R_X86_64_GOT64
38
- movabs foo@GOTOFF, %rax # R_X86_64_GOTOFF64
21
+ movabs $0 , %rax
22
+ movabs $0 , %rax
39
23
pushq $bar
40
24
movq foo(%rip ), %rdx
41
25
leaq foo-bar(%r14 ),%r14
42
26
addq $bar,%rax # R_X86_64_32S
43
- .quad foo@DTPOFF
44
- movabsq $baz@TPOFF, %rax
45
27
.word foo-bar
46
28
.byte foo-bar
47
29
call foo
53
35
movl $_GLOBAL_OFFSET_TABLE_, %eax
54
36
movabs $_GLOBAL_OFFSET_TABLE_, %rax
55
37
56
- .quad blah@SIZE # R_X86_64_SIZE64
57
- .quad blah@SIZE + 32 # R_X86_64_SIZE64
58
- .quad blah@SIZE - 32 # R_X86_64_SIZE64
59
- movl blah@SIZE, %eax # R_X86_64_SIZE32
60
- movl blah@SIZE + 32 , %eax # R_X86_64_SIZE32
61
- movl blah@SIZE - 32 , %eax # R_X86_64_SIZE32
62
-
63
38
.long foo@gotpcrel
64
39
.long foo@plt
65
40
@@ -81,51 +56,29 @@ weak_sym:
81
56
// CHECK: Section {
82
57
// CHECK: Name: .rela.text
83
58
// CHECK: Relocations [
84
- // CHECK-NEXT: 0x1 R_X86_64_32 .text
85
- // CHECK-NEXT: 0x8 R_X86_64_32S .text
86
- // CHECK-NEXT: 0x13 R_X86_64_32S .text
87
- // CHECK-NEXT: 0x1A R_X86_64_32S .text
88
- // CHECK-NEXT: 0x22 R_X86_64_32S .text
89
- // CHECK-NEXT: 0x26 R_X86_64_32 .text
90
- // CHECK-NEXT: 0x2D R_X86_64_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
91
- // CHECK-NEXT: 0x35 R_X86_64_CODE_4_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
92
- // CHECK-NEXT: 0x3D R_X86_64_CODE_4_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
93
- // CHECK-NEXT: 0x47 R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
94
- // CHECK-NEXT: 0x51 R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
95
- // CHECK-NEXT: 0x5B R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
96
- // CHECK-NEXT: 0x65 R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
97
- // CHECK-NEXT: 0x6F R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFC
98
- // CHECK-NEXT: 0x76 R_X86_64_TLSGD foo 0xFFFFFFFFFFFFFFFC
99
- // CHECK-NEXT: 0x7D R_X86_64_TPOFF32 foo 0x0
100
- // CHECK-NEXT: 0x84 R_X86_64_TLSLD foo 0xFFFFFFFFFFFFFFFC
101
- // CHECK-NEXT: 0x8B R_X86_64_DTPOFF32 foo 0x0
102
- // CHECK-NEXT: 0x91 R_X86_64_GOT64 foo 0x0
103
- // CHECK-NEXT: 0x9B R_X86_64_GOTOFF64 foo 0x0
104
- // CHECK-NEXT: 0xA4 R_X86_64_32S .text 0x0
105
- // CHECK-NEXT: 0xAB R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFC
106
- // CHECK-NEXT: 0xB2 R_X86_64_PC32 foo 0xB2
107
- // CHECK-NEXT: 0xB9 R_X86_64_32S .text 0x0
108
- // CHECK-NEXT: 0xBD R_X86_64_DTPOFF64 foo 0x0
109
- // CHECK-NEXT: 0xC7 R_X86_64_TPOFF64 baz 0x0
110
- // CHECK-NEXT: 0xCF R_X86_64_PC16 foo 0xCF
111
- // CHECK-NEXT: 0xD1 R_X86_64_PC8 foo 0xD1
112
- // CHECK-NEXT: 0xD3 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
113
- // CHECK-NEXT: 0xDA R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFB
114
- // CHECK-NEXT: 0xE1 R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x3
115
- // CHECK-NEXT: 0xE8 R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0xFFFFFFFFFFFFFFFC
116
- // CHECK-NEXT: 0xED R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x1
117
- // CHECK-NEXT: 0xF3 R_X86_64_GOTPC64 _GLOBAL_OFFSET_TABLE_ 0x2
118
- // CHECK-NEXT: 0xFB R_X86_64_SIZE64 blah 0x0
119
- // CHECK-NEXT: 0x103 R_X86_64_SIZE64 blah 0x20
120
- // CHECK-NEXT: 0x10B R_X86_64_SIZE64 blah 0xFFFFFFFFFFFFFFE0
121
- // CHECK-NEXT: 0x116 R_X86_64_SIZE32 blah 0x0
122
- // CHECK-NEXT: 0x11D R_X86_64_SIZE32 blah 0x20
123
- // CHECK-NEXT: 0x124 R_X86_64_SIZE32 blah 0xFFFFFFFFFFFFFFE0
124
- // CHECK-NEXT: 0x128 R_X86_64_GOTPCREL foo 0x0
125
- // CHECK-NEXT: 0x12C R_X86_64_PLT32 foo 0x0
126
- // CHECK-NEXT: 0x140 R_X86_64_32 .text 0x140
127
- // CHECK-NEXT: 0x145 R_X86_64_PC16 pr23771 0xFFFFFFFFFFFFFFFE
128
- // CHECK-NEXT: 0x147 R_X86_64_PC32 pr23272 0x0
59
+ // CHECK-NEXT: 0x1 R_X86_64_32 .text 0x0
60
+ // CHECK-NEXT: 0x8 R_X86_64_32S .text 0x0
61
+ // CHECK-NEXT: 0x13 R_X86_64_32S .text 0x0
62
+ // CHECK-NEXT: 0x1A R_X86_64_32S .text 0x0
63
+ // CHECK-NEXT: 0x22 R_X86_64_32S .text 0x0
64
+ // CHECK-NEXT: 0x26 R_X86_64_32 .text 0x0
65
+ // CHECK-NEXT: 0x3F R_X86_64_32S .text 0x0
66
+ // CHECK-NEXT: 0x46 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFC
67
+ // CHECK-NEXT: 0x4D R_X86_64_PC32 foo 0x4D
68
+ // CHECK-NEXT: 0x54 R_X86_64_32S .text 0x0
69
+ // CHECK-NEXT: 0x58 R_X86_64_PC16 foo 0x58
70
+ // CHECK-NEXT: 0x5A R_X86_64_PC8 foo 0x5A
71
+ // CHECK-NEXT: 0x5C R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
72
+ // CHECK-NEXT: 0x63 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFB
73
+ // CHECK-NEXT: 0x6A R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x3
74
+ // CHECK-NEXT: 0x71 R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0xFFFFFFFFFFFFFFFC
75
+ // CHECK-NEXT: 0x76 R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x1
76
+ // CHECK-NEXT: 0x7C R_X86_64_GOTPC64 _GLOBAL_OFFSET_TABLE_ 0x2
77
+ // CHECK-NEXT: 0x84 R_X86_64_GOTPCREL foo 0x0
78
+ // CHECK-NEXT: 0x88 R_X86_64_PLT32 foo 0x0
79
+ // CHECK-NEXT: 0x9C R_X86_64_32 .text 0x9C
80
+ // CHECK-NEXT: 0xA1 R_X86_64_PC16 pr23771 0xFFFFFFFFFFFFFFFE
81
+ // CHECK-NEXT: 0xA3 R_X86_64_PC32 pr23272 0x0
129
82
// CHECK-NEXT: ]
130
83
// CHECK-NEXT: }
131
84
0 commit comments