3 # Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
6 --- glibc-2.2.5/sysdeps/alpha/dl-machine.h~dl-machine-alpha.patch 2004-09-03 19:00:33.000000000 -0500
7 +++ glibc-2.2.5/sysdeps/alpha/dl-machine.h 2004-09-03 19:00:37.000000000 -0500
8 @@ -134,125 +134,126 @@
9 #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name, IMB) \
10 extern void tramp_name (void); \
12 - .globl " #tramp_name "
13 - .ent " #tramp_name "
16 - .frame $sp, 44*8, $26
17 - /* Preserve all integer registers that C normally doesn't. */
62 - .mask 0x27ff01ff, -44*8
63 - .fmask 0xfffffc03, -(44-21)*8
64 - /* Set up our $gp */
68 - /* Set up the arguments for fixup: */
69 - /* $16 = link_map out of plt0 */
70 - /* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */
71 - /* $18 = return address */
78 - bsr $26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng
79 - /* Move the destination address into position. */
81 - /* Restore program registers. */
105 - ldt $f10, 23*8($sp)
106 - ldt $f11, 24*8($sp)
107 - ldt $f12, 25*8($sp)
108 - ldt $f13, 26*8($sp)
109 - ldt $f14, 27*8($sp)
110 - ldt $f15, 28*8($sp)
111 - ldt $f16, 29*8($sp)
112 - ldt $f17, 30*8($sp)
113 - ldt $f18, 31*8($sp)
114 - ldt $f19, 32*8($sp)
115 - ldt $f20, 33*8($sp)
116 - ldt $f21, 34*8($sp)
117 - ldt $f22, 35*8($sp)
118 - ldt $f23, 36*8($sp)
119 - ldt $f24, 37*8($sp)
120 - ldt $f25, 38*8($sp)
121 - ldt $f26, 39*8($sp)
122 - ldt $f27, 40*8($sp)
123 - ldt $f28, 41*8($sp)
124 - ldt $f29, 42*8($sp)
125 - ldt $f30, 43*8($sp)
126 - /* Flush the Icache after having modified the .plt code. */
128 - /* Clean up and turn control to the destination */
131 + .globl " #tramp_name " \n\
132 + .ent " #tramp_name " \n\
133 +" #tramp_name ": \n\
134 + lda $sp, -44*8($sp) \n\
135 + .frame $sp, 44*8, $26 \n\
136 + /* Preserve all integer registers that C normally \n\
138 + stq $26, 0*8($sp) \n\
139 + stq $0, 1*8($sp) \n\
140 + stq $1, 2*8($sp) \n\
141 + stq $2, 3*8($sp) \n\
142 + stq $3, 4*8($sp) \n\
143 + stq $4, 5*8($sp) \n\
144 + stq $5, 6*8($sp) \n\
145 + stq $6, 7*8($sp) \n\
146 + stq $7, 8*8($sp) \n\
147 + stq $8, 9*8($sp) \n\
148 + stq $16, 10*8($sp) \n\
149 + stq $17, 11*8($sp) \n\
150 + stq $18, 12*8($sp) \n\
151 + stq $19, 13*8($sp) \n\
152 + stq $20, 14*8($sp) \n\
153 + stq $21, 15*8($sp) \n\
154 + stq $22, 16*8($sp) \n\
155 + stq $23, 17*8($sp) \n\
156 + stq $24, 18*8($sp) \n\
157 + stq $25, 19*8($sp) \n\
158 + stq $29, 20*8($sp) \n\
159 + stt $f0, 21*8($sp) \n\
160 + stt $f1, 22*8($sp) \n\
161 + stt $f10, 23*8($sp) \n\
162 + stt $f11, 24*8($sp) \n\
163 + stt $f12, 25*8($sp) \n\
164 + stt $f13, 26*8($sp) \n\
165 + stt $f14, 27*8($sp) \n\
166 + stt $f15, 28*8($sp) \n\
167 + stt $f16, 29*8($sp) \n\
168 + stt $f17, 30*8($sp) \n\
169 + stt $f18, 31*8($sp) \n\
170 + stt $f19, 32*8($sp) \n\
171 + stt $f20, 33*8($sp) \n\
172 + stt $f21, 34*8($sp) \n\
173 + stt $f22, 35*8($sp) \n\
174 + stt $f23, 36*8($sp) \n\
175 + stt $f24, 37*8($sp) \n\
176 + stt $f25, 38*8($sp) \n\
177 + stt $f26, 39*8($sp) \n\
178 + stt $f27, 40*8($sp) \n\
179 + stt $f28, 41*8($sp) \n\
180 + stt $f29, 42*8($sp) \n\
181 + stt $f30, 43*8($sp) \n\
182 + .mask 0x27ff01ff, -44*8 \n\
183 + .fmask 0xfffffc03, -(44-21)*8 \n\
184 + /* Set up our $gp */ \n\
186 + ldgp $gp, 0($gp) \n\
188 + /* Set up the arguments for fixup: */ \n\
189 + /* $16 = link_map out of plt0 */ \n\
190 + /* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */\n\
191 + /* $18 = return address */ \n\
192 + subq $28, $27, $17 \n\
193 + ldq $16, 8($27) \n\
194 + subq $17, 20, $17 \n\
196 + addq $17, $17, $17 \n\
197 + /* Do the fixup */ \n\
198 + bsr $26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng\n\
199 + /* Move the destination address into position. */ \n\
201 + /* Restore program registers. */ \n\
202 + ldq $26, 0*8($sp) \n\
203 + ldq $0, 1*8($sp) \n\
204 + ldq $1, 2*8($sp) \n\
205 + ldq $2, 3*8($sp) \n\
206 + ldq $3, 4*8($sp) \n\
207 + ldq $4, 5*8($sp) \n\
208 + ldq $5, 6*8($sp) \n\
209 + ldq $6, 7*8($sp) \n\
210 + ldq $7, 8*8($sp) \n\
211 + ldq $8, 9*8($sp) \n\
212 + ldq $16, 10*8($sp) \n\
213 + ldq $17, 11*8($sp) \n\
214 + ldq $18, 12*8($sp) \n\
215 + ldq $19, 13*8($sp) \n\
216 + ldq $20, 14*8($sp) \n\
217 + ldq $21, 15*8($sp) \n\
218 + ldq $22, 16*8($sp) \n\
219 + ldq $23, 17*8($sp) \n\
220 + ldq $24, 18*8($sp) \n\
221 + ldq $25, 19*8($sp) \n\
222 + ldq $29, 20*8($sp) \n\
223 + ldt $f0, 21*8($sp) \n\
224 + ldt $f1, 22*8($sp) \n\
225 + ldt $f10, 23*8($sp) \n\
226 + ldt $f11, 24*8($sp) \n\
227 + ldt $f12, 25*8($sp) \n\
228 + ldt $f13, 26*8($sp) \n\
229 + ldt $f14, 27*8($sp) \n\
230 + ldt $f15, 28*8($sp) \n\
231 + ldt $f16, 29*8($sp) \n\
232 + ldt $f17, 30*8($sp) \n\
233 + ldt $f18, 31*8($sp) \n\
234 + ldt $f19, 32*8($sp) \n\
235 + ldt $f20, 33*8($sp) \n\
236 + ldt $f21, 34*8($sp) \n\
237 + ldt $f22, 35*8($sp) \n\
238 + ldt $f23, 36*8($sp) \n\
239 + ldt $f24, 37*8($sp) \n\
240 + ldt $f25, 38*8($sp) \n\
241 + ldt $f26, 39*8($sp) \n\
242 + ldt $f27, 40*8($sp) \n\
243 + ldt $f28, 41*8($sp) \n\
244 + ldt $f29, 42*8($sp) \n\
245 + ldt $f30, 43*8($sp) \n\
246 + /* Flush the Icache after having modified the .plt code. */\n\
248 + /* Clean up and turn control to the destination */ \n\
249 + lda $sp, 44*8($sp) \n\
254 @@ -270,85 +271,87 @@
255 its return value is the user program's entry point. */
257 #define RTLD_START asm ("\
266 - /* Pass pointer to argument block to _dl_start. */
268 - bsr $26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng
271 - .globl _dl_start_user
272 - .ent _dl_start_user
276 - /* Save the user entry point address in s0. */
278 - /* Store the highest stack address. */
279 - stq $30, __libc_stack_end
280 - /* See if we were run as a command with the executable file
281 - name as an extra leading argument. */
282 - ldl $1, _dl_skip_args
283 - bne $1, $fixup_stack
285 - /* The special initializer gets called with the stack just
286 - as the application's entry point will see it; it can
287 - switch stacks if it moves these contents over. */
288 -" RTLD_START_SPECIAL_INIT "
289 - /* Call _dl_init(_dl_loaded, argc, argv, envp) to run initializers. */
290 - ldq $16, _dl_loaded
296 - /* Pass our finalizer function to the user in $0. */
298 - /* Jump to the user's entry point. */
302 - /* Adjust the stack pointer to skip _dl_skip_args words. This
303 - involves copying everything down, since the stack pointer must
304 - always be 16-byte aligned. */
314 - /* Copy down argv. */
320 - /* Copy down envp. */
326 - /* Copy down auxiliary table. */
334 - br $fixup_stack_ret
335 - .end _dl_start_user
343 +0: ldgp $gp, 0($gp) \n\
345 + /* Pass pointer to argument block to _dl_start. */ \n\
347 + bsr $26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng \n\
350 + .globl _dl_start_user \n\
351 + .ent _dl_start_user \n\
353 + .frame $30,0,$31,0 \n\
355 + /* Save the user entry point address in s0. */ \n\
357 + /* Store the highest stack address. */ \n\
358 + stq $30, __libc_stack_end \n\
359 + /* See if we were run as a command with the executable \n\
360 + file name as an extra leading argument. */ \n\
361 + ldl $1, _dl_skip_args \n\
362 + bne $1, $fixup_stack \n\
363 +$fixup_stack_ret: \n\
364 + /* The special initializer gets called with the stack \n\
365 + just as the application's entry point will see it; \n\
366 + it can switch stacks if it moves these contents \n\
368 +" RTLD_START_SPECIAL_INIT " \n\
369 + /* Call _dl_init(_dl_loaded, argc, argv, envp) to run \n\
370 + initializers. */ \n\
371 + ldq $16, _dl_loaded \n\
372 + ldq $17, 0($sp) \n\
373 + lda $18, 8($sp) \n\
374 + s8addq $17, 8, $19 \n\
375 + addq $19, $18, $19 \n\
376 + jsr $26, _dl_init \n\
377 + /* Pass our finalizer function to the user in $0. */ \n\
378 + lda $0, _dl_fini \n\
379 + /* Jump to the user's entry point. */ \n\
383 + /* Adjust the stack pointer to skip _dl_skip_args words.\n\
384 + This involves copying everything down, since the \n\
385 + stack pointer must always be 16-byte aligned. */ \n\
387 + ldq $5, _dl_argv \n\
388 + subq $31, $1, $6 \n\
389 + subq $2, $1, $2 \n\
390 + s8addq $6, $5, $5 \n\
392 + s8addq $1, $sp, $3 \n\
394 + stq $5, _dl_argv \n\
395 + /* Copy down argv. */ \n\
396 +0: ldq $5, 8($3) \n\
401 + /* Copy down envp. */ \n\
402 +1: ldq $5, 8($3) \n\
407 + /* Copy down auxiliary table. */ \n\
408 +2: ldq $5, 8($3) \n\
410 + addq $4, 16, $4 \n\
411 + addq $3, 16, $3 \n\
415 + br $fixup_stack_ret \n\
416 + .end _dl_start_user \n\
420 #ifndef RTLD_START_SPECIAL_INIT