Explorar el Código

Do not save variables in hi or lo across system calls, fixes issues with gcc-4.4 (#5351)

SVN-Revision: 17742
Florian Fainelli hace 16 años
padre
commit
9e1759bfe6
Se han modificado 1 ficheros con 30 adiciones y 0 borrados
  1. 30 0
      toolchain/uClibc/patches-0.9.30.1/901-hi_lo_system_calls.patch

+ 30 - 0
toolchain/uClibc/patches-0.9.30.1/901-hi_lo_system_calls.patch

@@ -0,0 +1,30 @@
+The kernel does not save these registers across system calls.  GCC 4.4
+has gotten more agressive about using them for temporary variables, so
+this shows up as intermittent crashes if you use a recent compiler.
+
+Signed-off-by: Daniel Jacobowitz <[email protected]>
+
+diff --git a/libc/sysdeps/linux/mips/bits/syscalls.h b/libc/sysdeps/linux/mips/bits/syscalls.h
+index 3639913..28b0f91 100644
+--- a/libc/sysdeps/linux/mips/bits/syscalls.h
++++ b/libc/sysdeps/linux/mips/bits/syscalls.h
+@@ -261,7 +261,7 @@
+ })
+ 
+ #define __SYSCALL_CLOBBERS "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", \
+-	"$14", "$15", "$24", "$25", "memory"
++	"$14", "$15", "$24", "$25", "hi", "lo", "memory"
+ 
+ #else /* N32 || N64 */
+ 
+@@ -318,7 +318,7 @@
+ })
+ 
+ #define __SYSCALL_CLOBBERS "$1", "$3", "$10", "$11", "$12", "$13", \
+-	"$14", "$15", "$24", "$25", "memory"
++	"$14", "$15", "$24", "$25", "hi", "lo", "memory"
+ 
+ #endif
+ 
+
+--