From e525bc9c260c6dcb96cd08590a8a983701af9419 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 14 Jun 2012 15:18:27 +0000 Subject: [PATCH] Fix MIPS32 frame-pointer forcing for more recent GCC. --- ChangeLog.mips | 6 ++++++ sysdeps/unix/sysv/linux/mips/mips32/sysdep.h | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog.mips b/ChangeLog.mips index 853f286..9469b5c 100644 --- a/ChangeLog.mips +++ b/ChangeLog.mips @@ -1,3 +1,9 @@ +2012-06-14 Joseph Myers + + * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h + (FORCE_FRAME_POINTER): Assign result of alloca to a volatile + variable. + 2012-06-01 Joseph Myers * sysdeps/mips/mips64/n32/s_fma.c: New file. diff --git a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h index e51f329..8c024b0 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h +++ b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h @@ -194,8 +194,9 @@ /* We need to use a frame pointer for the functions in which we adjust $sp around the syscall, or debug information and unwind information will be $sp relative and thus wrong during the syscall. As - of GCC 3.4.3, this is sufficient. */ -#define FORCE_FRAME_POINTER alloca (4) + of GCC 4.7, this is sufficient. */ +#define FORCE_FRAME_POINTER \ + void *volatile __fp_force __attribute__ ((unused)) = alloca (4) #define internal_syscall5(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4, arg5)\ ({ \ -- 2.7.4