Fix SH4 register-dump.h for soft-float

Message ID alpine.DEB.2.20.1611160138270.2244@digraph.polyomino.org.uk
State Committed
Headers

Commit Message

Joseph Myers Nov. 16, 2016, 1:39 a.m. UTC
  On Tue, 15 Nov 2016, Mike Frysinger wrote:

> seems like you could just move it into the existing ifdef scope
> rather than duplicating the logic ?  fpregs is only used inside
> of an existing if(){...} scope.

Here is a patch which does that.  (To be clear, it has to stay outside the 
if (), because pointers into it are used by writev after that if () has 
finished, so it needs to be live at that point.)

Fix SH4 register-dump.h for soft-float.

This patch fixes SH4 register-dump.h to declare a variable inside the
#ifdef in it is used, to avoid an unused variable error breaking the
build for soft-float.

Tested (compilation only) for SH4 soft-float.

2016-11-16  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/unix/sysv/linux/sh/sh4/register-dump.h (register_dump):
	Only declare fpregs if [__SH_FPU_ANY__].
  

Comments

Mike Frysinger Nov. 16, 2016, 3:15 a.m. UTC | #1
On 16 Nov 2016 01:39, Joseph Myers wrote:
> On Tue, 15 Nov 2016, Mike Frysinger wrote:
> > seems like you could just move it into the existing ifdef scope
> > rather than duplicating the logic ?  fpregs is only used inside
> > of an existing if(){...} scope.
> 
> Here is a patch which does that.  (To be clear, it has to stay outside the 
> if (), because pointers into it are used by writev after that if () has 
> finished, so it needs to be live at that point.)
> 
> Fix SH4 register-dump.h for soft-float.
> 
> This patch fixes SH4 register-dump.h to declare a variable inside the
> #ifdef in it is used, to avoid an unused variable error breaking the
> build for soft-float.

OK
-mike
  

Patch

diff --git a/sysdeps/unix/sysv/linux/sh/sh4/register-dump.h b/sysdeps/unix/sysv/linux/sh/sh4/register-dump.h
index 4a642ab..519a2ce 100644
--- a/sysdeps/unix/sysv/linux/sh/sh4/register-dump.h
+++ b/sysdeps/unix/sysv/linux/sh/sh4/register-dump.h
@@ -56,7 +56,6 @@  static void
 register_dump (int fd, struct sigcontext *ctx)
 {
   char regs[22][8];
-  char fpregs[34][8];
   struct iovec iov[22 * 2 + 34 * 2 + 2];
   size_t nr = 0;
 
@@ -144,6 +143,7 @@  register_dump (int fd, struct sigcontext *ctx)
   ADD_STRING ("\n");
 
 #ifdef __SH_FPU_ANY__
+  char fpregs[34][8];
   if (ctx->sc_ownedfp != 0)
     {
       hexvalue (ctx->sc_fpregs[0], fpregs[0], 8);