patches/glibc/2.2.5/dl-machine-alpha.patch
changeset 1 eeea35fbf182
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/patches/glibc/2.2.5/dl-machine-alpha.patch	Sat Feb 24 11:00:05 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