diff options
author | Florian Fainelli <florian@openwrt.org> | 2009-09-26 18:08:02 +0000 |
---|---|---|
committer | Florian Fainelli <florian@openwrt.org> | 2009-09-26 18:08:02 +0000 |
commit | b3ae6aabd76899a7fd129c6c8cecadb6ae33be3e (patch) | |
tree | 87e06183fb9ec2e21151df47640437cb53d090a4 /toolchain/uClibc | |
parent | 0743cdb828f51104782522221e7dfcdf423b131b (diff) | |
download | master-187ad058-b3ae6aabd76899a7fd129c6c8cecadb6ae33be3e.tar.gz master-187ad058-b3ae6aabd76899a7fd129c6c8cecadb6ae33be3e.tar.bz2 master-187ad058-b3ae6aabd76899a7fd129c6c8cecadb6ae33be3e.zip |
[toolchain] Do not save variables in hi or lo across system calls, fixes issues with gcc-4.4 (#5351)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@17742 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'toolchain/uClibc')
-rw-r--r-- | toolchain/uClibc/patches-0.9.30.1/901-hi_lo_system_calls.patch | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/toolchain/uClibc/patches-0.9.30.1/901-hi_lo_system_calls.patch b/toolchain/uClibc/patches-0.9.30.1/901-hi_lo_system_calls.patch new file mode 100644 index 0000000000..6c78130e3f --- /dev/null +++ b/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 <dan@codesourcery.com> + +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 + + +-- |