1.1 --- a/patches/glibc/2.2.5/dl-machine-alpha.patch Tue Aug 14 19:32:22 2007 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,424 +0,0 @@
1.4 -From http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/alpha/dl-machine.h.diff?r1=1.56&r2=1.57&cvsroot=glibc
1.5 -(minus first hunk)
1.6 -Lets glibc-2.2.5 compile with gcc-3.3
1.7 -
1.8 -===================================================================
1.9 -RCS file: /cvs/glibc/libc/sysdeps/alpha/dl-machine.h,v
1.10 -retrieving revision 1.56
1.11 -retrieving revision 1.57
1.12 -diff -u -r1.56 -r1.57
1.13 ---- libc/sysdeps/alpha/dl-machine.h 2001/12/12 00:10:27 1.56
1.14 -+++ libc/sysdeps/alpha/dl-machine.h 2001/12/31 17:33:59 1.57
1.15 -@@ -156,125 +157,126 @@
1.16 - #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name, IMB) \
1.17 - extern void tramp_name (void); \
1.18 - asm ( "\
1.19 -- .globl " #tramp_name "
1.20 -- .ent " #tramp_name "
1.21 --" #tramp_name ":
1.22 -- lda $sp, -44*8($sp)
1.23 -- .frame $sp, 44*8, $26
1.24 -- /* Preserve all integer registers that C normally doesn't. */
1.25 -- stq $26, 0*8($sp)
1.26 -- stq $0, 1*8($sp)
1.27 -- stq $1, 2*8($sp)
1.28 -- stq $2, 3*8($sp)
1.29 -- stq $3, 4*8($sp)
1.30 -- stq $4, 5*8($sp)
1.31 -- stq $5, 6*8($sp)
1.32 -- stq $6, 7*8($sp)
1.33 -- stq $7, 8*8($sp)
1.34 -- stq $8, 9*8($sp)
1.35 -- stq $16, 10*8($sp)
1.36 -- stq $17, 11*8($sp)
1.37 -- stq $18, 12*8($sp)
1.38 -- stq $19, 13*8($sp)
1.39 -- stq $20, 14*8($sp)
1.40 -- stq $21, 15*8($sp)
1.41 -- stq $22, 16*8($sp)
1.42 -- stq $23, 17*8($sp)
1.43 -- stq $24, 18*8($sp)
1.44 -- stq $25, 19*8($sp)
1.45 -- stq $29, 20*8($sp)
1.46 -- stt $f0, 21*8($sp)
1.47 -- stt $f1, 22*8($sp)
1.48 -- stt $f10, 23*8($sp)
1.49 -- stt $f11, 24*8($sp)
1.50 -- stt $f12, 25*8($sp)
1.51 -- stt $f13, 26*8($sp)
1.52 -- stt $f14, 27*8($sp)
1.53 -- stt $f15, 28*8($sp)
1.54 -- stt $f16, 29*8($sp)
1.55 -- stt $f17, 30*8($sp)
1.56 -- stt $f18, 31*8($sp)
1.57 -- stt $f19, 32*8($sp)
1.58 -- stt $f20, 33*8($sp)
1.59 -- stt $f21, 34*8($sp)
1.60 -- stt $f22, 35*8($sp)
1.61 -- stt $f23, 36*8($sp)
1.62 -- stt $f24, 37*8($sp)
1.63 -- stt $f25, 38*8($sp)
1.64 -- stt $f26, 39*8($sp)
1.65 -- stt $f27, 40*8($sp)
1.66 -- stt $f28, 41*8($sp)
1.67 -- stt $f29, 42*8($sp)
1.68 -- stt $f30, 43*8($sp)
1.69 -- .mask 0x27ff01ff, -44*8
1.70 -- .fmask 0xfffffc03, -(44-21)*8
1.71 -- /* Set up our $gp */
1.72 -- br $gp, .+4
1.73 -- ldgp $gp, 0($gp)
1.74 -- .prologue 0
1.75 -- /* Set up the arguments for fixup: */
1.76 -- /* $16 = link_map out of plt0 */
1.77 -- /* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */
1.78 -- /* $18 = return address */
1.79 -- subq $28, $27, $17
1.80 -- ldq $16, 8($27)
1.81 -- subq $17, 20, $17
1.82 -- mov $26, $18
1.83 -- addq $17, $17, $17
1.84 -- /* Do the fixup */
1.85 -- bsr $26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng
1.86 -- /* Move the destination address into position. */
1.87 -- mov $0, $27
1.88 -- /* Restore program registers. */
1.89 -- ldq $26, 0*8($sp)
1.90 -- ldq $0, 1*8($sp)
1.91 -- ldq $1, 2*8($sp)
1.92 -- ldq $2, 3*8($sp)
1.93 -- ldq $3, 4*8($sp)
1.94 -- ldq $4, 5*8($sp)
1.95 -- ldq $5, 6*8($sp)
1.96 -- ldq $6, 7*8($sp)
1.97 -- ldq $7, 8*8($sp)
1.98 -- ldq $8, 9*8($sp)
1.99 -- ldq $16, 10*8($sp)
1.100 -- ldq $17, 11*8($sp)
1.101 -- ldq $18, 12*8($sp)
1.102 -- ldq $19, 13*8($sp)
1.103 -- ldq $20, 14*8($sp)
1.104 -- ldq $21, 15*8($sp)
1.105 -- ldq $22, 16*8($sp)
1.106 -- ldq $23, 17*8($sp)
1.107 -- ldq $24, 18*8($sp)
1.108 -- ldq $25, 19*8($sp)
1.109 -- ldq $29, 20*8($sp)
1.110 -- ldt $f0, 21*8($sp)
1.111 -- ldt $f1, 22*8($sp)
1.112 -- ldt $f10, 23*8($sp)
1.113 -- ldt $f11, 24*8($sp)
1.114 -- ldt $f12, 25*8($sp)
1.115 -- ldt $f13, 26*8($sp)
1.116 -- ldt $f14, 27*8($sp)
1.117 -- ldt $f15, 28*8($sp)
1.118 -- ldt $f16, 29*8($sp)
1.119 -- ldt $f17, 30*8($sp)
1.120 -- ldt $f18, 31*8($sp)
1.121 -- ldt $f19, 32*8($sp)
1.122 -- ldt $f20, 33*8($sp)
1.123 -- ldt $f21, 34*8($sp)
1.124 -- ldt $f22, 35*8($sp)
1.125 -- ldt $f23, 36*8($sp)
1.126 -- ldt $f24, 37*8($sp)
1.127 -- ldt $f25, 38*8($sp)
1.128 -- ldt $f26, 39*8($sp)
1.129 -- ldt $f27, 40*8($sp)
1.130 -- ldt $f28, 41*8($sp)
1.131 -- ldt $f29, 42*8($sp)
1.132 -- ldt $f30, 43*8($sp)
1.133 -- /* Flush the Icache after having modified the .plt code. */
1.134 -- " #IMB "
1.135 -- /* Clean up and turn control to the destination */
1.136 -- lda $sp, 44*8($sp)
1.137 -- jmp $31, ($27)
1.138 -+ .globl " #tramp_name " \n\
1.139 -+ .ent " #tramp_name " \n\
1.140 -+" #tramp_name ": \n\
1.141 -+ lda $sp, -44*8($sp) \n\
1.142 -+ .frame $sp, 44*8, $26 \n\
1.143 -+ /* Preserve all integer registers that C normally \n\
1.144 -+ doesn't. */ \n\
1.145 -+ stq $26, 0*8($sp) \n\
1.146 -+ stq $0, 1*8($sp) \n\
1.147 -+ stq $1, 2*8($sp) \n\
1.148 -+ stq $2, 3*8($sp) \n\
1.149 -+ stq $3, 4*8($sp) \n\
1.150 -+ stq $4, 5*8($sp) \n\
1.151 -+ stq $5, 6*8($sp) \n\
1.152 -+ stq $6, 7*8($sp) \n\
1.153 -+ stq $7, 8*8($sp) \n\
1.154 -+ stq $8, 9*8($sp) \n\
1.155 -+ stq $16, 10*8($sp) \n\
1.156 -+ stq $17, 11*8($sp) \n\
1.157 -+ stq $18, 12*8($sp) \n\
1.158 -+ stq $19, 13*8($sp) \n\
1.159 -+ stq $20, 14*8($sp) \n\
1.160 -+ stq $21, 15*8($sp) \n\
1.161 -+ stq $22, 16*8($sp) \n\
1.162 -+ stq $23, 17*8($sp) \n\
1.163 -+ stq $24, 18*8($sp) \n\
1.164 -+ stq $25, 19*8($sp) \n\
1.165 -+ stq $29, 20*8($sp) \n\
1.166 -+ stt $f0, 21*8($sp) \n\
1.167 -+ stt $f1, 22*8($sp) \n\
1.168 -+ stt $f10, 23*8($sp) \n\
1.169 -+ stt $f11, 24*8($sp) \n\
1.170 -+ stt $f12, 25*8($sp) \n\
1.171 -+ stt $f13, 26*8($sp) \n\
1.172 -+ stt $f14, 27*8($sp) \n\
1.173 -+ stt $f15, 28*8($sp) \n\
1.174 -+ stt $f16, 29*8($sp) \n\
1.175 -+ stt $f17, 30*8($sp) \n\
1.176 -+ stt $f18, 31*8($sp) \n\
1.177 -+ stt $f19, 32*8($sp) \n\
1.178 -+ stt $f20, 33*8($sp) \n\
1.179 -+ stt $f21, 34*8($sp) \n\
1.180 -+ stt $f22, 35*8($sp) \n\
1.181 -+ stt $f23, 36*8($sp) \n\
1.182 -+ stt $f24, 37*8($sp) \n\
1.183 -+ stt $f25, 38*8($sp) \n\
1.184 -+ stt $f26, 39*8($sp) \n\
1.185 -+ stt $f27, 40*8($sp) \n\
1.186 -+ stt $f28, 41*8($sp) \n\
1.187 -+ stt $f29, 42*8($sp) \n\
1.188 -+ stt $f30, 43*8($sp) \n\
1.189 -+ .mask 0x27ff01ff, -44*8 \n\
1.190 -+ .fmask 0xfffffc03, -(44-21)*8 \n\
1.191 -+ /* Set up our $gp */ \n\
1.192 -+ br $gp, .+4 \n\
1.193 -+ ldgp $gp, 0($gp) \n\
1.194 -+ .prologue 0 \n\
1.195 -+ /* Set up the arguments for fixup: */ \n\
1.196 -+ /* $16 = link_map out of plt0 */ \n\
1.197 -+ /* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */\n\
1.198 -+ /* $18 = return address */ \n\
1.199 -+ subq $28, $27, $17 \n\
1.200 -+ ldq $16, 8($27) \n\
1.201 -+ subq $17, 20, $17 \n\
1.202 -+ mov $26, $18 \n\
1.203 -+ addq $17, $17, $17 \n\
1.204 -+ /* Do the fixup */ \n\
1.205 -+ bsr $26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng\n\
1.206 -+ /* Move the destination address into position. */ \n\
1.207 -+ mov $0, $27 \n\
1.208 -+ /* Restore program registers. */ \n\
1.209 -+ ldq $26, 0*8($sp) \n\
1.210 -+ ldq $0, 1*8($sp) \n\
1.211 -+ ldq $1, 2*8($sp) \n\
1.212 -+ ldq $2, 3*8($sp) \n\
1.213 -+ ldq $3, 4*8($sp) \n\
1.214 -+ ldq $4, 5*8($sp) \n\
1.215 -+ ldq $5, 6*8($sp) \n\
1.216 -+ ldq $6, 7*8($sp) \n\
1.217 -+ ldq $7, 8*8($sp) \n\
1.218 -+ ldq $8, 9*8($sp) \n\
1.219 -+ ldq $16, 10*8($sp) \n\
1.220 -+ ldq $17, 11*8($sp) \n\
1.221 -+ ldq $18, 12*8($sp) \n\
1.222 -+ ldq $19, 13*8($sp) \n\
1.223 -+ ldq $20, 14*8($sp) \n\
1.224 -+ ldq $21, 15*8($sp) \n\
1.225 -+ ldq $22, 16*8($sp) \n\
1.226 -+ ldq $23, 17*8($sp) \n\
1.227 -+ ldq $24, 18*8($sp) \n\
1.228 -+ ldq $25, 19*8($sp) \n\
1.229 -+ ldq $29, 20*8($sp) \n\
1.230 -+ ldt $f0, 21*8($sp) \n\
1.231 -+ ldt $f1, 22*8($sp) \n\
1.232 -+ ldt $f10, 23*8($sp) \n\
1.233 -+ ldt $f11, 24*8($sp) \n\
1.234 -+ ldt $f12, 25*8($sp) \n\
1.235 -+ ldt $f13, 26*8($sp) \n\
1.236 -+ ldt $f14, 27*8($sp) \n\
1.237 -+ ldt $f15, 28*8($sp) \n\
1.238 -+ ldt $f16, 29*8($sp) \n\
1.239 -+ ldt $f17, 30*8($sp) \n\
1.240 -+ ldt $f18, 31*8($sp) \n\
1.241 -+ ldt $f19, 32*8($sp) \n\
1.242 -+ ldt $f20, 33*8($sp) \n\
1.243 -+ ldt $f21, 34*8($sp) \n\
1.244 -+ ldt $f22, 35*8($sp) \n\
1.245 -+ ldt $f23, 36*8($sp) \n\
1.246 -+ ldt $f24, 37*8($sp) \n\
1.247 -+ ldt $f25, 38*8($sp) \n\
1.248 -+ ldt $f26, 39*8($sp) \n\
1.249 -+ ldt $f27, 40*8($sp) \n\
1.250 -+ ldt $f28, 41*8($sp) \n\
1.251 -+ ldt $f29, 42*8($sp) \n\
1.252 -+ ldt $f30, 43*8($sp) \n\
1.253 -+ /* Flush the Icache after having modified the .plt code. */\n\
1.254 -+ " #IMB " \n\
1.255 -+ /* Clean up and turn control to the destination */ \n\
1.256 -+ lda $sp, 44*8($sp) \n\
1.257 -+ jmp $31, ($27) \n\
1.258 - .end " #tramp_name)
1.259 -
1.260 - #ifndef PROF
1.261 -@@ -292,85 +294,87 @@
1.262 - its return value is the user program's entry point. */
1.263 -
1.264 - #define RTLD_START asm ("\
1.265 --.text
1.266 -- .set at
1.267 -- .globl _start
1.268 -- .ent _start
1.269 --_start:
1.270 -- br $gp, 0f
1.271 --0: ldgp $gp, 0($gp)
1.272 -- .prologue 0
1.273 -- /* Pass pointer to argument block to _dl_start. */
1.274 -- mov $sp, $16
1.275 -- bsr $26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng
1.276 -- .end _start
1.277 -- /* FALLTHRU */
1.278 -- .globl _dl_start_user
1.279 -- .ent _dl_start_user
1.280 --_dl_start_user:
1.281 -- .frame $30,0,$31,0
1.282 -- .prologue 0
1.283 -- /* Save the user entry point address in s0. */
1.284 -- mov $0, $9
1.285 -- /* Store the highest stack address. */
1.286 -- stq $30, __libc_stack_end
1.287 -- /* See if we were run as a command with the executable file
1.288 -- name as an extra leading argument. */
1.289 -- ldl $1, _dl_skip_args
1.290 -- bne $1, $fixup_stack
1.291 --$fixup_stack_ret:
1.292 -- /* The special initializer gets called with the stack just
1.293 -- as the application's entry point will see it; it can
1.294 -- switch stacks if it moves these contents over. */
1.295 --" RTLD_START_SPECIAL_INIT "
1.296 -- /* Call _dl_init(_dl_loaded, argc, argv, envp) to run initializers. */
1.297 -- ldq $16, _dl_loaded
1.298 -- ldq $17, 0($sp)
1.299 -- lda $18, 8($sp)
1.300 -- s8addq $17, 8, $19
1.301 -- addq $19, $18, $19
1.302 -- jsr $26, _dl_init
1.303 -- /* Pass our finalizer function to the user in $0. */
1.304 -- lda $0, _dl_fini
1.305 -- /* Jump to the user's entry point. */
1.306 -- mov $9, $27
1.307 -- jmp ($9)
1.308 --$fixup_stack:
1.309 -- /* Adjust the stack pointer to skip _dl_skip_args words. This
1.310 -- involves copying everything down, since the stack pointer must
1.311 -- always be 16-byte aligned. */
1.312 -- ldq $2, 0($sp)
1.313 -- ldq $5, _dl_argv
1.314 -- subq $31, $1, $6
1.315 -- subq $2, $1, $2
1.316 -- s8addq $6, $5, $5
1.317 -- mov $sp, $4
1.318 -- s8addq $1, $sp, $3
1.319 -- stq $2, 0($sp)
1.320 -- stq $5, _dl_argv
1.321 -- /* Copy down argv. */
1.322 --0: ldq $5, 8($3)
1.323 -- addq $4, 8, $4
1.324 -- addq $3, 8, $3
1.325 -- stq $5, 0($4)
1.326 -- bne $5, 0b
1.327 -- /* Copy down envp. */
1.328 --1: ldq $5, 8($3)
1.329 -- addq $4, 8, $4
1.330 -- addq $3, 8, $3
1.331 -- stq $5, 0($4)
1.332 -- bne $5, 1b
1.333 -- /* Copy down auxiliary table. */
1.334 --2: ldq $5, 8($3)
1.335 -- ldq $6, 16($3)
1.336 -- addq $4, 16, $4
1.337 -- addq $3, 16, $3
1.338 -- stq $5, -8($4)
1.339 -- stq $6, 0($4)
1.340 -- bne $5, 2b
1.341 -- br $fixup_stack_ret
1.342 -- .end _dl_start_user
1.343 -- .set noat
1.344 -+.text \n\
1.345 -+ .set at \n\
1.346 -+ .globl _start \n\
1.347 -+ .ent _start \n\
1.348 -+_start: \n\
1.349 -+ br $gp, 0f \n\
1.350 -+0: ldgp $gp, 0($gp) \n\
1.351 -+ .prologue 0 \n\
1.352 -+ /* Pass pointer to argument block to _dl_start. */ \n\
1.353 -+ mov $sp, $16 \n\
1.354 -+ bsr $26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng \n\
1.355 -+ .end _start \n\
1.356 -+ /* FALLTHRU */ \n\
1.357 -+ .globl _dl_start_user \n\
1.358 -+ .ent _dl_start_user \n\
1.359 -+_dl_start_user: \n\
1.360 -+ .frame $30,0,$31,0 \n\
1.361 -+ .prologue 0 \n\
1.362 -+ /* Save the user entry point address in s0. */ \n\
1.363 -+ mov $0, $9 \n\
1.364 -+ /* Store the highest stack address. */ \n\
1.365 -+ stq $30, __libc_stack_end \n\
1.366 -+ /* See if we were run as a command with the executable \n\
1.367 -+ file name as an extra leading argument. */ \n\
1.368 -+ ldl $1, _dl_skip_args \n\
1.369 -+ bne $1, $fixup_stack \n\
1.370 -+$fixup_stack_ret: \n\
1.371 -+ /* The special initializer gets called with the stack \n\
1.372 -+ just as the application's entry point will see it; \n\
1.373 -+ it can switch stacks if it moves these contents \n\
1.374 -+ over. */ \n\
1.375 -+" RTLD_START_SPECIAL_INIT " \n\
1.376 -+ /* Call _dl_init(_dl_loaded, argc, argv, envp) to run \n\
1.377 -+ initializers. */ \n\
1.378 -+ ldq $16, _dl_loaded \n\
1.379 -+ ldq $17, 0($sp) \n\
1.380 -+ lda $18, 8($sp) \n\
1.381 -+ s8addq $17, 8, $19 \n\
1.382 -+ addq $19, $18, $19 \n\
1.383 -+ jsr $26, _dl_init \n\
1.384 -+ /* Pass our finalizer function to the user in $0. */ \n\
1.385 -+ lda $0, _dl_fini \n\
1.386 -+ /* Jump to the user's entry point. */ \n\
1.387 -+ mov $9, $27 \n\
1.388 -+ jmp ($9) \n\
1.389 -+$fixup_stack: \n\
1.390 -+ /* Adjust the stack pointer to skip _dl_skip_args words.\n\
1.391 -+ This involves copying everything down, since the \n\
1.392 -+ stack pointer must always be 16-byte aligned. */ \n\
1.393 -+ ldq $2, 0($sp) \n\
1.394 -+ ldq $5, _dl_argv \n\
1.395 -+ subq $31, $1, $6 \n\
1.396 -+ subq $2, $1, $2 \n\
1.397 -+ s8addq $6, $5, $5 \n\
1.398 -+ mov $sp, $4 \n\
1.399 -+ s8addq $1, $sp, $3 \n\
1.400 -+ stq $2, 0($sp) \n\
1.401 -+ stq $5, _dl_argv \n\
1.402 -+ /* Copy down argv. */ \n\
1.403 -+0: ldq $5, 8($3) \n\
1.404 -+ addq $4, 8, $4 \n\
1.405 -+ addq $3, 8, $3 \n\
1.406 -+ stq $5, 0($4) \n\
1.407 -+ bne $5, 0b \n\
1.408 -+ /* Copy down envp. */ \n\
1.409 -+1: ldq $5, 8($3) \n\
1.410 -+ addq $4, 8, $4 \n\
1.411 -+ addq $3, 8, $3 \n\
1.412 -+ stq $5, 0($4) \n\
1.413 -+ bne $5, 1b \n\
1.414 -+ /* Copy down auxiliary table. */ \n\
1.415 -+2: ldq $5, 8($3) \n\
1.416 -+ ldq $6, 16($3) \n\
1.417 -+ addq $4, 16, $4 \n\
1.418 -+ addq $3, 16, $3 \n\
1.419 -+ stq $5, -8($4) \n\
1.420 -+ stq $6, 0($4) \n\
1.421 -+ bne $5, 2b \n\
1.422 -+ br $fixup_stack_ret \n\
1.423 -+ .end _dl_start_user \n\
1.424 -+ .set noat \n\
1.425 - .previous");
1.426 -
1.427 - #ifndef RTLD_START_SPECIAL_INIT