about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPetar Jovanovic <petar.jovanovic@rt-rk.com>2012-07-06 19:12:21 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-07-06 19:12:21 +0000
commit76b1f93b0416aae7aa4356188ad08e9216187616 (patch)
tree27c08ae63f0c97d4832f74bcd41ea866a303d843
parentf17ac40d7cb8e8c462476b6ab703262f6b8f6da8 (diff)
downloadglibc-76b1f93b0416aae7aa4356188ad08e9216187616.tar.gz
glibc-76b1f93b0416aae7aa4356188ad08e9216187616.tar.xz
glibc-76b1f93b0416aae7aa4356188ad08e9216187616.zip
Do not store data below the stack pointer on MIPS.
-rw-r--r--ports/ChangeLog.mips5
-rw-r--r--ports/sysdeps/mips/dl-machine.h5
2 files changed, 8 insertions, 2 deletions
diff --git a/ports/ChangeLog.mips b/ports/ChangeLog.mips
index 337ef43c9a..de39d53937 100644
--- a/ports/ChangeLog.mips
+++ b/ports/ChangeLog.mips
@@ -1,3 +1,8 @@
+2012-07-06  Petar Jovanovic  <petar.jovanovic@rt-rk.com>
+
+	* sysdeps/mips/dl-machine.h (RTLD_START): Do not store data below
+	the stack pointer.
+
 2012-06-19  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/unix/sysv/linux/mips/mips32/nptl/ld.abilist: Update
diff --git a/ports/sysdeps/mips/dl-machine.h b/ports/sysdeps/mips/dl-machine.h
index bc0378566c..cc7da7625c 100644
--- a/ports/sysdeps/mips/dl-machine.h
+++ b/ports/sysdeps/mips/dl-machine.h
@@ -266,13 +266,14 @@ do {									\
 	" STRINGXP(PTR_ADDU) " $7, $7, " STRINGXP (PTRSIZE) " \n\
 	# Make sure the stack pointer is aligned for _dl_init_internal.\n\
 	and $2, $29, -2 * " STRINGXP(SZREG) "\n\
-	" STRINGXP(PTR_S) " $29, -" STRINGXP(SZREG) "($2)\n\
+	move $8, $29\n\
 	" STRINGXP(PTR_SUBIU) " $29, $2, 32\n\
+	" STRINGXP(PTR_S) " $8, (32 - " STRINGXP(SZREG) ")($29)\n\
 	" STRINGXP(SAVE_GP(16)) "\n\
 	# Call the function to run the initializers.\n\
 	jal _dl_init_internal\n\
 	# Restore the stack pointer for _start.\n\
-	" STRINGXP(PTR_L)  " $29, 32-" STRINGXP(SZREG) "($29)\n\
+	" STRINGXP(PTR_L)  " $29, (32 - " STRINGXP(SZREG) ")($29)\n\
 	# Pass our finalizer function to the user in $2 as per ELF ABI.\n\
 	" STRINGXP(PTR_LA) " $2, _dl_fini\n\
 	# Jump to the user entry point.\n\