GCC 3.4 fix. This doesn't fix the oops, yet.
authorImre Kaloz <kaloz@openwrt.org>
Sat, 2 Apr 2005 16:40:48 +0000 (16:40 +0000)
committerImre Kaloz <kaloz@openwrt.org>
Sat, 2 Apr 2005 16:40:48 +0000 (16:40 +0000)
SVN-Revision: 520

openwrt/package/linux/kernel-patches/307-gcc-3.4-fix.patch [new file with mode: 0644]

diff --git a/openwrt/package/linux/kernel-patches/307-gcc-3.4-fix.patch b/openwrt/package/linux/kernel-patches/307-gcc-3.4-fix.patch
new file mode 100644 (file)
index 0000000..27adbf1
--- /dev/null
@@ -0,0 +1,214 @@
+diff -Nur linux-2.4.29/arch/mips/kernel/signal.c linux-2.4.29-gcc3.4/arch/mips/kernel/signal.c
+--- linux-2.4.29/arch/mips/kernel/signal.c     2005-01-19 15:09:29.000000000 +0100
++++ linux-2.4.29-gcc3.4/arch/mips/kernel/signal.c      2005-03-27 23:09:57.000000000 +0200
+@@ -6,8 +6,10 @@
+  * Copyright (C) 1991, 1992  Linus Torvalds
+  * Copyright (C) 1994 - 1999  Ralf Baechle
+  * Copyright (C) 1999 Silicon Graphics, Inc.
++ * Copyright (C) 2004  Maciej W. Rozycki
+  */
+ #include <linux/config.h>
++#include <linux/compiler.h>
+ #include <linux/sched.h>
+ #include <linux/mm.h>
+ #include <linux/smp.h>
+@@ -76,7 +78,9 @@
+  * Atomically swap in the new signal mask, and wait for a signal.
+  */
+ save_static_function(sys_sigsuspend);
+-static_unused int _sys_sigsuspend(struct pt_regs regs)
++static int _sys_sigsuspend(struct pt_regs regs)
++      __asm__("_sys_sigsuspend") __attribute_used__;
++static int _sys_sigsuspend(struct pt_regs regs)
+ {
+       sigset_t *uset, saveset, newset;
+@@ -102,7 +106,9 @@
+ }
+ save_static_function(sys_rt_sigsuspend);
+-static_unused int _sys_rt_sigsuspend(struct pt_regs regs)
++static int _sys_rt_sigsuspend(struct pt_regs regs)
++      __asm__("_sys_rt_sigsuspend") __attribute_used__;
++static int _sys_rt_sigsuspend(struct pt_regs regs)
+ {
+       sigset_t *unewset, saveset, newset;
+         size_t sigsetsize;
+diff -Nur linux-2.4.29/arch/mips/kernel/syscall.c linux-2.4.29-gcc3.4/arch/mips/kernel/syscall.c
+--- linux-2.4.29/arch/mips/kernel/syscall.c    2005-01-19 15:09:29.000000000 +0100
++++ linux-2.4.29-gcc3.4/arch/mips/kernel/syscall.c     2005-03-27 23:09:57.000000000 +0200
+@@ -5,6 +5,7 @@
+  *
+  * Copyright (C) 1995 - 2000 by Ralf Baechle
+  * Copyright (C) 2000 Silicon Graphics, Inc.
++ * Copyright (C) 2004  Maciej W. Rozycki
+  *
+  * TODO:  Implement the compatibility syscalls.
+  *        Don't waste that much memory for empty entries in the syscall
+@@ -158,7 +159,9 @@
+ }
+ save_static_function(sys_fork);
+-static_unused int _sys_fork(struct pt_regs regs)
++static int _sys_fork(struct pt_regs regs)
++      __asm__("_sys_fork") __attribute_used__;
++static int _sys_fork(struct pt_regs regs)
+ {
+       int res;
+@@ -168,7 +171,9 @@
+ save_static_function(sys_clone);
+-static_unused int _sys_clone(struct pt_regs regs)
++static int _sys_clone(struct pt_regs regs)
++      __asm__("_sys_clone") __attribute_used__;
++static int _sys_clone(struct pt_regs regs)
+ {
+       unsigned long clone_flags;
+       unsigned long newsp;
+diff -Nur linux-2.4.29/arch/mips64/kernel/signal.c linux-2.4.29-gcc3.4/arch/mips64/kernel/signal.c
+--- linux-2.4.29/arch/mips64/kernel/signal.c   2005-01-19 15:09:32.000000000 +0100
++++ linux-2.4.29-gcc3.4/arch/mips64/kernel/signal.c    2005-03-27 23:09:57.000000000 +0200
+@@ -6,8 +6,10 @@
+  * Copyright (C) 1991, 1992  Linus Torvalds
+  * Copyright (C) 1994 - 2000  Ralf Baechle
+  * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
++ * Copyright (C) 2004  Maciej W. Rozycki
+  */
+ #include <linux/config.h>
++#include <linux/compiler.h>
+ #include <linux/sched.h>
+ #include <linux/mm.h>
+ #include <linux/smp.h>
+@@ -75,7 +77,9 @@
+  * Atomically swap in the new signal mask, and wait for a signal.
+  */
+ save_static_function(sys_rt_sigsuspend);
+-static_unused int _sys_rt_sigsuspend(abi64_no_regargs, struct pt_regs regs)
++static int _sys_rt_sigsuspend(abi64_no_regargs, struct pt_regs regs)
++       __asm__("_sys_rt_sigsuspend") __attribute_used__;
++static int _sys_rt_sigsuspend(abi64_no_regargs, struct pt_regs regs)
+ {
+       sigset_t *unewset, saveset, newset;
+         size_t sigsetsize;
+diff -Nur linux-2.4.29/arch/mips64/kernel/signal32.c linux-2.4.29-gcc3.4/arch/mips64/kernel/signal32.c
+--- linux-2.4.29/arch/mips64/kernel/signal32.c 2005-01-19 15:09:33.000000000 +0100
++++ linux-2.4.29-gcc3.4/arch/mips64/kernel/signal32.c  2005-03-27 23:09:57.000000000 +0200
+@@ -6,7 +6,9 @@
+  * Copyright (C) 1991, 1992  Linus Torvalds
+  * Copyright (C) 1994 - 2000  Ralf Baechle
+  * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
++ * Copyright (C) 2004  Maciej W. Rozycki
+  */
++#include <linux/compiler.h>
+ #include <linux/sched.h>
+ #include <linux/mm.h>
+ #include <linux/smp.h>
+@@ -192,7 +194,9 @@
+  * Atomically swap in the new signal mask, and wait for a signal.
+  */
+ save_static_function(sys32_sigsuspend);
+-static_unused int _sys32_sigsuspend(abi64_no_regargs, struct pt_regs regs)
++static int _sys32_sigsuspend(abi64_no_regargs, struct pt_regs regs)
++      __asm__("_sys32_sigsuspend") __attribute_used__;
++static int _sys32_sigsuspend(abi64_no_regargs, struct pt_regs regs)
+ {
+       sigset32_t *uset;
+       sigset_t newset, saveset;
+@@ -219,7 +223,9 @@
+ }
+ save_static_function(sys32_rt_sigsuspend);
+-static_unused int _sys32_rt_sigsuspend(abi64_no_regargs, struct pt_regs regs)
++static int _sys32_rt_sigsuspend(abi64_no_regargs, struct pt_regs regs)
++      __asm__("_sys32_rt_sigsuspend") __attribute_used__;
++static int _sys32_rt_sigsuspend(abi64_no_regargs, struct pt_regs regs)
+ {
+       sigset32_t *uset;
+       sigset_t newset, saveset;
+diff -Nur linux-2.4.29/arch/mips64/kernel/syscall.c linux-2.4.29-gcc3.4/arch/mips64/kernel/syscall.c
+--- linux-2.4.29/arch/mips64/kernel/syscall.c  2005-01-19 15:09:33.000000000 +0100
++++ linux-2.4.29-gcc3.4/arch/mips64/kernel/syscall.c   2005-03-27 23:09:57.000000000 +0200
+@@ -6,7 +6,9 @@
+  * Copyright (C) 1995 - 2000, 2001 by Ralf Baechle
+  * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
+  * Copyright (C) 2001 MIPS Technologies, Inc.
++ * Copyright (C) 2004  Maciej W. Rozycki
+  */
++#include <linux/compiler.h>
+ #include <linux/errno.h>
+ #include <linux/linkage.h>
+ #include <linux/mm.h>
+@@ -151,7 +153,9 @@
+ }
+ save_static_function(sys_fork);
+-static_unused int _sys_fork(abi64_no_regargs, struct pt_regs regs)
++static int _sys_fork(abi64_no_regargs, struct pt_regs regs)
++      __asm__("_sys_fork") __attribute_used__;
++static int _sys_fork(abi64_no_regargs, struct pt_regs regs)
+ {
+       int res;
+@@ -160,7 +164,9 @@
+ }
+ save_static_function(sys_clone);
+-static_unused int _sys_clone(abi64_no_regargs, struct pt_regs regs)
++static int _sys_clone(abi64_no_regargs, struct pt_regs regs)
++      __asm__("_sys_clone") __attribute_used__;
++static int _sys_clone(abi64_no_regargs, struct pt_regs regs)
+ {
+       unsigned long clone_flags;
+       unsigned long newsp;
+diff -Nur linux-2.4.29/include/asm-mips/ptrace.h linux-2.4.29-gcc3.4/include/asm-mips/ptrace.h
+--- linux-2.4.29/include/asm-mips/ptrace.h     2004-02-18 14:36:32.000000000 +0100
++++ linux-2.4.29-gcc3.4/include/asm-mips/ptrace.h      2005-03-27 23:09:57.000000000 +0200
+@@ -4,6 +4,7 @@
+  * for more details.
+  *
+  * Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000 by Ralf Baechle
++ * Copyright (C) 2004  Maciej W. Rozycki
+  *
+  * Machine dependent structs and defines to help the user use
+  * the ptrace system call.
+@@ -64,12 +65,10 @@
+         "sw\t$22,"__str(PT_R22)"($29)\n\t"                              \
+         "sw\t$23,"__str(PT_R23)"($29)\n\t"                              \
+         "sw\t$30,"__str(PT_R30)"($29)\n\t"                              \
++       "j\t_" #symbol "\n\t"                                           \
+         ".end\t" #symbol "\n\t"                                         \
+         ".size\t" #symbol",. - " #symbol)
+-/* Used in declaration of save_static functions.  */
+-#define static_unused static __attribute__((unused))
+-
+ #endif /* !__ASSEMBLY__ */
+ /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
+diff -Nur linux-2.4.29/include/asm-mips64/ptrace.h linux-2.4.29-gcc3.4/include/asm-mips64/ptrace.h
+--- linux-2.4.29/include/asm-mips64/ptrace.h   2004-02-18 14:36:32.000000000 +0100
++++ linux-2.4.29-gcc3.4/include/asm-mips64/ptrace.h    2005-03-27 23:09:57.000000000 +0200
+@@ -5,6 +5,7 @@
+  *
+  * Copyright (C) 1994, 95, 96, 97, 98, 99, 2000 by Ralf Baechle
+  * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
++ * Copyright (C) 2004  Maciej W. Rozycki
+  */
+ #ifndef _ASM_PTRACE_H
+ #define _ASM_PTRACE_H
+@@ -61,12 +62,10 @@
+         "sd\t$22,"__str(PT_R22)"($29)\n\t"                              \
+         "sd\t$23,"__str(PT_R23)"($29)\n\t"                              \
+         "sd\t$30,"__str(PT_R30)"($29)\n\t"                              \
++        "j\t_" #symbol "\n\t"                                           \
+         ".end\t" #symbol "\n\t"                                         \
+         ".size\t" #symbol",. - " #symbol)
+-/* Used in declaration of save_static functions.  */
+-#define static_unused static __attribute__((unused))
+-
+ #define abi64_no_regargs                                              \
+       unsigned long __dummy0,                                         \
+       unsigned long __dummy1,                                         \