This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.24-648-g3a66b2b


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  3a66b2b0637e439fb0e7a14c6c3d4c58190eec61 (commit)
      from  cd880aa2ccabecd1a258b39b987160f0e86fd52d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=3a66b2b0637e439fb0e7a14c6c3d4c58190eec61

commit 3a66b2b0637e439fb0e7a14c6c3d4c58190eec61
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Thu Jan 19 00:05:34 2017 +0000

    Fix ARM fpu_control.h for assemblers requiring VFP insn names (bug 21047).
    
    Bug 21047 reports that the clang assembler disallows the ARM
    implementations of _FPU_GETCW and _FPU_SETCW.
    
    These are deliberately written the way they are, using generic
    coprocessor instructions (from the days when VFP was just one possible
    coprocessor for ARM) that have the right encodings, to handle the case
    of the instructions being used runtime-conditionally inside glibc,
    where use of these macros is not meant to result in either the
    assembler requiring VFP to be enabled at assembly time or in it
    marking the object as using VFP.  However, more recent ARM ARM
    versions have restricted the definitions of the coprocessor
    instructions and reportedly the clang assembler follows that in
    disallowing those names for VFP instructions.
    
    In the non-__SOFTFP__ case - which in fact is the only case where
    these macro definitions can be used outside the build of glibc itself
    - using VFP instruction names is of course fine, since we know that
    VFP is enabled for that compilation.  Thus, this patch uses the
    current VFP names for these instructions in that case to improve
    compatibility for this header file.
    
    Tested for hard-float and soft-float builds of glibc, including that
    installed stripped shared libraries are unchanged by the patch.
    
    	[BZ #21047]
    	* sysdeps/arm/fpu_control.h [!__SOFTFP__] (_FPU_GETCW): Use VFP
    	name for instruction.
    	[!__SOFTFP__] (_FPU_SETCW): Likewise.

diff --git a/ChangeLog b/ChangeLog
index 9961dc4..e3f3f5f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2017-01-19  Joseph Myers  <joseph@codesourcery.com>
+
+	[BZ #21047]
+	* sysdeps/arm/fpu_control.h [!__SOFTFP__] (_FPU_GETCW): Use VFP
+	name for instruction.
+	[!__SOFTFP__] (_FPU_SETCW): Likewise.
+
 2017-01-18  Joseph Myers  <joseph@codesourcery.com>
 
 	* scripts/build-many-glibcs.py (Config.build_cross_tool): Use -j1
diff --git a/sysdeps/arm/fpu_control.h b/sysdeps/arm/fpu_control.h
index d49066c..405d427 100644
--- a/sysdeps/arm/fpu_control.h
+++ b/sysdeps/arm/fpu_control.h
@@ -53,12 +53,19 @@ extern fpu_control_t __fpu_control;
 typedef unsigned int fpu_control_t;
 
 /* Macros for accessing the hardware control word.  */
+#ifdef __SOFTFP__
 /* This is fmrx %0, fpscr.  */
-#define _FPU_GETCW(cw) \
+# define _FPU_GETCW(cw) \
   __asm__ __volatile__ ("mrc p10, 7, %0, cr1, cr0, 0" : "=r" (cw))
 /* This is fmxr fpscr, %0.  */
-#define _FPU_SETCW(cw) \
+# define _FPU_SETCW(cw) \
   __asm__ __volatile__ ("mcr p10, 7, %0, cr1, cr0, 0" : : "r" (cw))
+#else
+# define _FPU_GETCW(cw) \
+  __asm__ __volatile__ ("vmrs %0, fpscr" : "=r" (cw))
+# define _FPU_SETCW(cw) \
+  __asm__ __volatile__ ("vmsr fpscr, %0" : : "r" (cw))
+#endif
 
 /* Default control word set at startup.  */
 extern fpu_control_t __fpu_control;

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                 |    7 +++++++
 sysdeps/arm/fpu_control.h |   11 +++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]