1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/patches/glibc/2.2.5/dl-machine-alpha.patch Wed May 23 20:49:02 2007 +0000
1.3 @@ -0,0 +1,424 @@
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