Last change
on this file was 607, checked in by bird, 22 years ago |
Initial revision
|
-
Property cvs2svn:cvs-rev
set to
1.1
-
Property svn:eol-style
set to
native
-
Property svn:executable
set to
*
|
File size:
3.0 KB
|
Line | |
---|
1 | ! Force .got aligned to 4K, so it very likely gets at 0x413000
|
---|
2 | .data
|
---|
3 | .balign 4096
|
---|
4 | .section ".tdata", "awT", @progbits
|
---|
5 | .globl sg1, sg2
|
---|
6 | .globl sh1, sh2
|
---|
7 | .hidden sh1, sh2
|
---|
8 | sg1: .long 17
|
---|
9 | sg2: .long 18
|
---|
10 | sl1: .long 65
|
---|
11 | sl2: .long 66
|
---|
12 | sh1: .long 257
|
---|
13 | sh2: .long 258
|
---|
14 | ! Force .text aligned to 4K, so it very likely gets at 0x401000.
|
---|
15 | .text
|
---|
16 | .balign 4096
|
---|
17 | .globl fn2
|
---|
18 | .type fn2,@function
|
---|
19 | fn2:
|
---|
20 | mov.l r12,@-r15
|
---|
21 | mov.l r14,@-r15
|
---|
22 | sts.l pr,@-r15
|
---|
23 | mova .L3,r0
|
---|
24 | mov.l .L3,r12
|
---|
25 | add r0,r12
|
---|
26 | mov r15,r14
|
---|
27 | nop;nop;nop;nop
|
---|
28 |
|
---|
29 | ! GD -> IE because variable is not defined in executable
|
---|
30 | mov.l 1f,r4
|
---|
31 | mova 2f,r0
|
---|
32 | mov.l 2f,r1
|
---|
33 | add r0,r1
|
---|
34 | jsr @r1
|
---|
35 | add r12,r4
|
---|
36 | bra 3f
|
---|
37 | nop
|
---|
38 | .align 2
|
---|
39 | 1: .long sG1@TLSGD
|
---|
40 | 2: .long __tls_get_addr@PLT
|
---|
41 | 3:
|
---|
42 | nop;nop;nop;nop
|
---|
43 |
|
---|
44 | ! GD -> IE because variable is not defined in executable where
|
---|
45 | ! the variable is referenced through @gottpoff too
|
---|
46 | mov.l 1f,r4
|
---|
47 | mova 2f,r0
|
---|
48 | mov.l 2f,r1
|
---|
49 | add r0,r1
|
---|
50 | jsr @r1
|
---|
51 | add r12,r4
|
---|
52 | bra 3f
|
---|
53 | nop
|
---|
54 | .align 2
|
---|
55 | 1: .long sG2@TLSGD
|
---|
56 | 2: .long __tls_get_addr@PLT
|
---|
57 | 3:
|
---|
58 | nop;nop;nop;nop
|
---|
59 |
|
---|
60 | ! GD -> LE with global variable defined in executable
|
---|
61 | mov.l 1f,r4
|
---|
62 | mova 2f,r0
|
---|
63 | mov.l 2f,r1
|
---|
64 | add r0,r1
|
---|
65 | jsr @r1
|
---|
66 | add r12,r4
|
---|
67 | bra 3f
|
---|
68 | nop
|
---|
69 | .align 2
|
---|
70 | 1: .long sg1@TLSGD
|
---|
71 | 2: .long __tls_get_addr@PLT
|
---|
72 | 3:
|
---|
73 | nop;nop;nop;nop
|
---|
74 |
|
---|
75 | ! GD -> LE with local variable defined in executable
|
---|
76 | mov.l 1f,r4
|
---|
77 | mova 2f,r0
|
---|
78 | mov.l 2f,r1
|
---|
79 | add r0,r1
|
---|
80 | jsr @r1
|
---|
81 | add r12,r4
|
---|
82 | bra 3f
|
---|
83 | nop
|
---|
84 | .align 2
|
---|
85 | 1: .long sl1@TLSGD
|
---|
86 | 2: .long __tls_get_addr@PLT
|
---|
87 | 3:
|
---|
88 | nop;nop;nop;nop
|
---|
89 |
|
---|
90 | ! GD -> LE with hidden variable defined in executable
|
---|
91 | mov.l 1f,r4
|
---|
92 | mova 2f,r0
|
---|
93 | mov.l 2f,r1
|
---|
94 | add r0,r1
|
---|
95 | jsr @r1
|
---|
96 | add r12,r4
|
---|
97 | bra 3f
|
---|
98 | nop
|
---|
99 | .align 2
|
---|
100 | 1: .long sh1@TLSGD
|
---|
101 | 2: .long __tls_get_addr@PLT
|
---|
102 | 3:
|
---|
103 | nop;nop;nop;nop
|
---|
104 |
|
---|
105 | ! LD -> LE with local variable defined in executable
|
---|
106 | mov.l 1f,r4
|
---|
107 | mova 2f,r0
|
---|
108 | mov.l 2f,r1
|
---|
109 | add r0,r1
|
---|
110 | jsr @r1
|
---|
111 | add r12,r4
|
---|
112 | bra 3f
|
---|
113 | nop
|
---|
114 | .align 2
|
---|
115 | 1: .long sl1@TLSLDM
|
---|
116 | 2: .long __tls_get_addr@PLT
|
---|
117 | 3:
|
---|
118 | nop;nop
|
---|
119 | mov.l .L4,r1
|
---|
120 | add r0,r1
|
---|
121 | nop;nop
|
---|
122 | mov.l .L5,r2
|
---|
123 | add r0,r2
|
---|
124 | nop;nop;nop;nop
|
---|
125 |
|
---|
126 | ! LD -> LE against hidden variables
|
---|
127 | mov.l 1f,r4
|
---|
128 | mova 2f,r0
|
---|
129 | mov.l 2f,r1
|
---|
130 | add r0,r1
|
---|
131 | jsr @r1
|
---|
132 | add r12,r4
|
---|
133 | bra 3f
|
---|
134 | nop
|
---|
135 | .align 2
|
---|
136 | 1: .long sh1@TLSLDM
|
---|
137 | 2: .long __tls_get_addr@PLT
|
---|
138 | 3:
|
---|
139 | nop;nop
|
---|
140 | mov.l .L6,r1
|
---|
141 | add r0,r1
|
---|
142 | nop;nop
|
---|
143 | mov.l .L7,r2
|
---|
144 | add r0,r2
|
---|
145 | nop;nop;nop;nop
|
---|
146 |
|
---|
147 | ! @GOTTPOFF IE against global var
|
---|
148 | mov.l 1f,r0
|
---|
149 | stc gbr,r1
|
---|
150 | mov.l @(r0,r12),r0
|
---|
151 | bra 2f
|
---|
152 | add r0,r1
|
---|
153 | .align 2
|
---|
154 | 1: .long sG2@GOTTPOFF
|
---|
155 | 2:
|
---|
156 | nop;nop;nop;nop
|
---|
157 |
|
---|
158 | ! @GOTTPOFF IE against global var
|
---|
159 | mov.l 1f,r0
|
---|
160 | stc gbr,r1
|
---|
161 | mov.l @(r0,r12),r0
|
---|
162 | bra 2f
|
---|
163 | add r1,r0
|
---|
164 | .align 2
|
---|
165 | 1: .long sG4@GOTTPOFF
|
---|
166 | 2:
|
---|
167 | nop;nop;nop;nop
|
---|
168 |
|
---|
169 | ! @GOTTPOFF IE -> LE against global var defined in exec
|
---|
170 | mov.l 1f,r0
|
---|
171 | stc gbr,r1
|
---|
172 | mov.l @(r0,r12),r0
|
---|
173 | bra 2f
|
---|
174 | add r0,r1
|
---|
175 | .align 2
|
---|
176 | 1: .long sg1@GOTTPOFF
|
---|
177 | 2:
|
---|
178 | nop;nop;nop;nop
|
---|
179 |
|
---|
180 | ! @GOTTPOFF IE -> LE against hidden var
|
---|
181 | mov.l 1f,r0
|
---|
182 | stc gbr,r1
|
---|
183 | mov.l @(r0,r12),r0
|
---|
184 | bra 2f
|
---|
185 | add r0,r1
|
---|
186 | .align 2
|
---|
187 | 1: .long sh1@GOTTPOFF
|
---|
188 | 2:
|
---|
189 | nop;nop;nop;nop
|
---|
190 |
|
---|
191 | mov r14,r15
|
---|
192 | lds.l @r15+,pr
|
---|
193 | mov.l @r15+,r14
|
---|
194 | rts
|
---|
195 | mov.l @r15+,r12
|
---|
196 |
|
---|
197 | .align 2
|
---|
198 | .L3: .long _GLOBAL_OFFSET_TABLE_
|
---|
199 | .L4: .long sl1@DTPOFF
|
---|
200 | .L5: .long sl2@DTPOFF
|
---|
201 | .L6: .long sh1@DTPOFF
|
---|
202 | .L7: .long sh2@DTPOFF
|
---|
203 | ! Fill page with 0.
|
---|
204 | .space .L8-.
|
---|
205 | .balign 4096
|
---|
206 | .L8:
|
---|
Note:
See
TracBrowser
for help on using the repository browser.