patches/glibc/2.2.5/dl-machine-sparc.patch
changeset 330 447b203edc2e
parent 329 419d959441ed
child 331 0c05f9ea3254
     1.1 --- a/patches/glibc/2.2.5/dl-machine-sparc.patch	Tue Aug 14 19:32:22 2007 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,230 +0,0 @@
     1.4 ---- glibc-2.2.5/sysdeps/sparc/sparc32/dl-machine.h.old	Sat Jun  7 18:19:03 2003
     1.5 -+++ glibc-2.2.5/sysdeps/sparc/sparc32/dl-machine.h	Sat Jun  7 18:20:04 2003
     1.6 -@@ -148,23 +148,23 @@
     1.7 -    and then redirect to the address it returns.  */
     1.8 - #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name)	\
     1.9 -   asm ( "\
    1.10 --	.text
    1.11 --	.globl	" #tramp_name "
    1.12 --	.type	" #tramp_name ", @function
    1.13 --	.align	32
    1.14 --" #tramp_name ":
    1.15 --	/* Set up the arguments to fixup --
    1.16 --	   %o0 = link_map out of plt0
    1.17 --	   %o1 = offset of reloc entry
    1.18 --	   %o2 = return address  */
    1.19 --	ld	[%o7 + 8], %o0
    1.20 --	srl	%g1, 10, %o1
    1.21 --	mov	%i7, %o2
    1.22 --	call	" #fixup_name "
    1.23 --	 sub	%o1, 4*12, %o1
    1.24 --	jmp	%o0
    1.25 --	 restore
    1.26 --	.size	" #tramp_name ", . - " #tramp_name "
    1.27 -+	.text\n\
    1.28 -+	.globl	" #tramp_name "\n\
    1.29 -+	.type	" #tramp_name ", @function\n\
    1.30 -+	.align	32\n\
    1.31 -+" #tramp_name ":\n\
    1.32 -+	/* Set up the arguments to fixup --\n\
    1.33 -+	   %o0 = link_map out of plt0\n\
    1.34 -+	   %o1 = offset of reloc entry\n\
    1.35 -+	   %o2 = return address  */\n\
    1.36 -+	ld	[%o7 + 8], %o0\n\
    1.37 -+	srl	%g1, 10, %o1\n\
    1.38 -+	mov	%i7, %o2\n\
    1.39 -+	call	" #fixup_name "\n\
    1.40 -+	 sub	%o1, 4*12, %o1\n\
    1.41 -+	jmp	%o0\n\
    1.42 -+	 restore\n\
    1.43 -+	.size	" #tramp_name ", . - " #tramp_name "\n\
    1.44 - 	.previous")
    1.45 - 
    1.46 - #ifndef PROF
    1.47 -@@ -199,96 +199,96 @@
    1.48 -    its return value is the user program's entry point.  */
    1.49 - 
    1.50 - #define RTLD_START __asm__ ("\
    1.51 --	.text
    1.52 --	.globl	_start
    1.53 --	.type	_start, @function
    1.54 --	.align	32
    1.55 --_start:
    1.56 --  /* Allocate space for functions to drop their arguments.  */
    1.57 --	sub	%sp, 6*4, %sp
    1.58 --  /* Pass pointer to argument block to _dl_start.  */
    1.59 --	call	_dl_start
    1.60 --	 add	%sp, 22*4, %o0
    1.61 --	/* FALTHRU */
    1.62 --	.globl	_dl_start_user
    1.63 --	.type	_dl_start_user, @function
    1.64 --_dl_start_user:
    1.65 --  /* Load the PIC register.  */
    1.66 --1:	call	2f
    1.67 --	 sethi	%hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
    1.68 --2:	or	%l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
    1.69 --	add	%l7, %o7, %l7
    1.70 --  /* Save the user entry point address in %l0 */
    1.71 --	mov	%o0, %l0
    1.72 --  /* Store the highest stack address.  */
    1.73 --	sethi	%hi(__libc_stack_end), %g2
    1.74 --	or	%g2, %lo(__libc_stack_end), %g2
    1.75 --	ld	[%l7 + %g2], %l1
    1.76 --	sethi	%hi(_dl_skip_args), %g2
    1.77 --	add	%sp, 6*4, %l2
    1.78 --	or	%g2, %lo(_dl_skip_args), %g2
    1.79 --	st	%l2, [%l1]
    1.80 --  /* See if we were run as a command with the executable file name as an
    1.81 --     extra leading argument.  If so, adjust the contents of the stack.  */
    1.82 --	ld	[%l7+%g2], %i0
    1.83 --	ld	[%i0], %i0
    1.84 --	tst	%i0
    1.85 --	beq	3f
    1.86 --	 ld	[%sp+22*4], %i5		/* load argc */
    1.87 --	/* Find out how far to shift.  */
    1.88 --	sethi	%hi(_dl_argv), %l3
    1.89 --	or	%l3, %lo(_dl_argv), %l3
    1.90 --	ld	[%l7+%l3], %l3
    1.91 --	sub	%i5, %i0, %i5
    1.92 --	ld	[%l3], %l4
    1.93 --	sll	%i0, 2, %i2
    1.94 --	st	%i5, [%sp+22*4]
    1.95 --	sub	%l4, %i2, %l4
    1.96 --	add	%sp, 23*4, %i1
    1.97 --	add	%i1, %i2, %i2
    1.98 --	st	%l4, [%l3]
    1.99 --	/* Copy down argv */
   1.100 --21:	ld	[%i2], %i3
   1.101 --	add	%i2, 4, %i2
   1.102 --	tst	%i3
   1.103 --	st	%i3, [%i1]
   1.104 --	bne	21b
   1.105 --	 add	%i1, 4, %i1
   1.106 --	/* Copy down env */
   1.107 --22:	ld	[%i2], %i3
   1.108 --	add	%i2, 4, %i2
   1.109 --	tst	%i3
   1.110 --	st	%i3, [%i1]
   1.111 --	bne	22b
   1.112 --	 add	%i1, 4, %i1
   1.113 --	/* Copy down auxiliary table.  */
   1.114 --23:	ld	[%i2], %i3
   1.115 --	ld	[%i2+4], %i4
   1.116 --	add	%i2, 8, %i2
   1.117 --	tst	%i3
   1.118 --	st	%i3, [%i1]
   1.119 --	st	%i4, [%i1+4]
   1.120 --	bne	23b
   1.121 --	 add	%i1, 8, %i1
   1.122 --  /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp.  */
   1.123 --3:	sethi	%hi(_dl_loaded), %o0
   1.124 --	add	%sp, 23*4, %o2
   1.125 --	orcc	%o0, %lo(_dl_loaded), %o0
   1.126 --	sll	%i5, 2, %o3
   1.127 --	ld	[%l7+%o0], %o0
   1.128 --	add	%o3, 4, %o3
   1.129 --	mov	%i5, %o1
   1.130 --	add	%o2, %o3, %o3
   1.131 --	call	_dl_init
   1.132 --	 ld	[%o0], %o0
   1.133 --  /* Pass our finalizer function to the user in %g1.  */
   1.134 --	sethi	%hi(_dl_fini), %g1
   1.135 --	or	%g1, %lo(_dl_fini), %g1
   1.136 --	ld	[%l7+%g1], %g1
   1.137 --  /* Jump to the user's entry point and deallocate the extra stack we got.  */
   1.138 --	jmp	%l0
   1.139 --	 add	%sp, 6*4, %sp
   1.140 --	.size   _dl_start_user, . - _dl_start_user
   1.141 -+	.text\n\
   1.142 -+	.globl	_start\n\
   1.143 -+	.type	_start, @function\n\
   1.144 -+	.align	32\n\
   1.145 -+_start:\n\
   1.146 -+  /* Allocate space for functions to drop their arguments.  */\n\
   1.147 -+	sub	%sp, 6*4, %sp\n\
   1.148 -+  /* Pass pointer to argument block to _dl_start.  */\n\
   1.149 -+	call	_dl_start\n\
   1.150 -+	 add	%sp, 22*4, %o0\n\
   1.151 -+	/* FALTHRU */\n\
   1.152 -+	.globl	_dl_start_user\n\
   1.153 -+	.type	_dl_start_user, @function\n\
   1.154 -+_dl_start_user:\n\
   1.155 -+  /* Load the PIC register.  */\n\
   1.156 -+1:	call	2f\n\
   1.157 -+	 sethi	%hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7\n\
   1.158 -+2:	or	%l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7\n\
   1.159 -+	add	%l7, %o7, %l7\n\
   1.160 -+  /* Save the user entry point address in %l0 */\n\
   1.161 -+	mov	%o0, %l0\n\
   1.162 -+  /* Store the highest stack address.  */\n\
   1.163 -+	sethi	%hi(__libc_stack_end), %g2\n\
   1.164 -+	or	%g2, %lo(__libc_stack_end), %g2\n\
   1.165 -+	ld	[%l7 + %g2], %l1\n\
   1.166 -+	sethi	%hi(_dl_skip_args), %g2\n\
   1.167 -+	add	%sp, 6*4, %l2\n\
   1.168 -+	or	%g2, %lo(_dl_skip_args), %g2\n\
   1.169 -+	st	%l2, [%l1]\n\
   1.170 -+  /* See if we were run as a command with the executable file name as an\n\
   1.171 -+     extra leading argument.  If so, adjust the contents of the stack.  */\n\
   1.172 -+	ld	[%l7+%g2], %i0\n\
   1.173 -+	ld	[%i0], %i0\n\
   1.174 -+	tst	%i0\n\
   1.175 -+	beq	3f\n\
   1.176 -+	 ld	[%sp+22*4], %i5		/* load argc */\n\
   1.177 -+	/* Find out how far to shift.  */\n\
   1.178 -+	sethi	%hi(_dl_argv), %l3\n\
   1.179 -+	or	%l3, %lo(_dl_argv), %l3\n\
   1.180 -+	ld	[%l7+%l3], %l3\n\
   1.181 -+	sub	%i5, %i0, %i5\n\
   1.182 -+	ld	[%l3], %l4\n\
   1.183 -+	sll	%i0, 2, %i2\n\
   1.184 -+	st	%i5, [%sp+22*4]\n\
   1.185 -+	sub	%l4, %i2, %l4\n\
   1.186 -+	add	%sp, 23*4, %i1\n\
   1.187 -+	add	%i1, %i2, %i2\n\
   1.188 -+	st	%l4, [%l3]\n\
   1.189 -+	/* Copy down argv */\n\
   1.190 -+21:	ld	[%i2], %i3\n\
   1.191 -+	add	%i2, 4, %i2\n\
   1.192 -+	tst	%i3\n\
   1.193 -+	st	%i3, [%i1]\n\
   1.194 -+	bne	21b\n\
   1.195 -+	 add	%i1, 4, %i1\n\
   1.196 -+	/* Copy down env */\n\
   1.197 -+22:	ld	[%i2], %i3\n\
   1.198 -+	add	%i2, 4, %i2\n\
   1.199 -+	tst	%i3\n\
   1.200 -+	st	%i3, [%i1]\n\
   1.201 -+	bne	22b\n\
   1.202 -+	 add	%i1, 4, %i1\n\
   1.203 -+	/* Copy down auxiliary table.  */\n\
   1.204 -+23:	ld	[%i2], %i3\n\
   1.205 -+	ld	[%i2+4], %i4\n\
   1.206 -+	add	%i2, 8, %i2\n\
   1.207 -+	tst	%i3\n\
   1.208 -+	st	%i3, [%i1]\n\
   1.209 -+	st	%i4, [%i1+4]\n\
   1.210 -+	bne	23b\n\
   1.211 -+	 add	%i1, 8, %i1\n\
   1.212 -+  /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp.  */\n\
   1.213 -+3:	sethi	%hi(_dl_loaded), %o0\n\
   1.214 -+	add	%sp, 23*4, %o2\n\
   1.215 -+	orcc	%o0, %lo(_dl_loaded), %o0\n\
   1.216 -+	sll	%i5, 2, %o3\n\
   1.217 -+	ld	[%l7+%o0], %o0\n\
   1.218 -+	add	%o3, 4, %o3\n\
   1.219 -+	mov	%i5, %o1\n\
   1.220 -+	add	%o2, %o3, %o3\n\
   1.221 -+	call	_dl_init\n\
   1.222 -+	 ld	[%o0], %o0\n\
   1.223 -+  /* Pass our finalizer function to the user in %g1.  */\n\
   1.224 -+	sethi	%hi(_dl_fini), %g1\n\
   1.225 -+	or	%g1, %lo(_dl_fini), %g1\n\
   1.226 -+	ld	[%l7+%g1], %g1\n\
   1.227 -+  /* Jump to the user's entry point and deallocate the extra stack we got.  */\n\
   1.228 -+	jmp	%l0\n\
   1.229 -+	 add	%sp, 6*4, %sp\n\
   1.230 -+	.size   _dl_start_user, . - _dl_start_user\n\
   1.231 - 	.previous");
   1.232 - 
   1.233 - static inline Elf32_Addr