From 11ca09e932517ea361cb9388bd35e1c7a957bfc3 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Tue, 17 Sep 2013 21:28:19 +0000 Subject: [PATCH] Fix powerpc fpu_control.h namespace and parenthesis issues (bug 15966). --- ChangeLog | 9 +++++++++ NEWS | 2 +- sysdeps/powerpc/fpu_control.h | 24 ++++++++++++------------ 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index b6bf6c3262..40907210b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2013-09-17 Joseph Myers + + [BZ #15966] + * sysdeps/powerpc/fpu_control.h [!_SOFT_FLOAT && !__NO_FPRS__] + (_FPU_GETCW): Use initial "__" on variable and field names but not + on macro parameter name. + [!_SOFT_FLOAT && !__NO_FPRS__] (_FPU_SETCW): Likewise. Use + parentheses around reference to macro parameter. + 2013-09-13 Richard Sandiford * locale/programs/ld-ctype.c (find_idx): Use uint32_t in diff --git a/NEWS b/NEWS index af58b752ea..e72e937436 100644 --- a/NEWS +++ b/NEWS @@ -11,7 +11,7 @@ Version 2.19 14155, 14699, 15427, 15522, 15531, 15532, 15736, 15748, 15749, 15797, 15844, 15849, 15855, 15856, 15857, 15867, 15886, 15887, 15890, 15892, - 15893, 15895, 15897, 15905, 15909, 15921, 15939. + 15893, 15895, 15897, 15905, 15909, 15921, 15939, 15966. * CVE-2013-4237 The readdir_r function could write more than NAME_MAX bytes to the d_name member of struct dirent, or omit the terminating NUL diff --git a/sysdeps/powerpc/fpu_control.h b/sysdeps/powerpc/fpu_control.h index 159543beed..1a6d395ca8 100644 --- a/sysdeps/powerpc/fpu_control.h +++ b/sysdeps/powerpc/fpu_control.h @@ -59,18 +59,18 @@ extern fpu_control_t __fpu_control; typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__))); /* Macros for accessing the hardware control word. */ -# define _FPU_GETCW(__cw) ( { \ - union { double d; fpu_control_t cw[2]; } \ - tmp __attribute__ ((__aligned__(8))); \ - __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \ - (__cw)=tmp.cw[1]; \ - tmp.cw[1]; } ) -# define _FPU_SETCW(__cw) { \ - union { double d; fpu_control_t cw[2]; } \ - tmp __attribute__ ((__aligned__(8))); \ - tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \ - tmp.cw[1] = __cw; \ - __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \ +# define _FPU_GETCW(cw) ( { \ + union { double __d; fpu_control_t __cw[2]; } \ + __tmp __attribute__ ((__aligned__(8))); \ + __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (__tmp.__d) : : "fr0"); \ + (cw) = __tmp.__cw[1]; \ + __tmp.__cw[1]; } ) +# define _FPU_SETCW(cw) { \ + union { double __d; fpu_control_t __cw[2]; } \ + __tmp __attribute__ ((__aligned__(8))); \ + __tmp.__cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \ + __tmp.__cw[1] = (cw); \ + __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (__tmp.__d) : "fr0"); \ } /* Default control word set at startup. */