]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix mips16 __fpu_control static linking (bug 18397).
authorJoseph Myers <joseph@codesourcery.com>
Mon, 11 May 2015 22:58:10 +0000 (22:58 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Mon, 11 May 2015 22:58:10 +0000 (22:58 +0000)
Programs are supposed to be able to define the __fpu_control variable,
overriding the library's version to cause the floating-point control
word to be set to the chosen value at startup.

This is broken for mips16 for static linking because the library's
__fpu_control variable is in the same object file as the helper
functions used by fpu_control.h for mips16, so test-fpucw-ieee-static
fails to link with multiple definitions of __fpu_control.

This patch fixes this by putting the helpers in a separate file rather
than overriding fpu_control.c.  Tested for mips16 that this fixes the
link failure and the ABI tests still pass.

[BZ #18397]
* sysdeps/mips/mips32/fpu/fpu_control.c: Move to ....
* sysdeps/mips/mips32/fpu/fpucw-helpers.c: ... here.  Include
<fpu_control.h> instead of <math/fpu_control.c>.
* sysdeps/mips/mips32/fpu/Makefile: New file.

ChangeLog
NEWS
sysdeps/mips/mips32/fpu/Makefile [new file with mode: 0644]
sysdeps/mips/mips32/fpu/fpucw-helpers.c [moved from sysdeps/mips/mips32/fpu/fpu_control.c with 97% similarity]

index 05c23e75b10d7c43ecbc24333325bd24ab5eaf78..c998dd59b87fbdfa27b765f052592c0fe89160f4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2015-05-11  Joseph Myers  <joseph@codesourcery.com>
+
+       [BZ #18397]
+       * sysdeps/mips/mips32/fpu/fpu_control.c: Move to ....
+       * sysdeps/mips/mips32/fpu/fpucw-helpers.c: ... here.  Include
+       <fpu_control.h> instead of <math/fpu_control.c>.
+       * sysdeps/mips/mips32/fpu/Makefile: New file.
+
 2015-05-11  Andreas Schwab  <schwab@suse.de>
 
        [BZ #18007]
diff --git a/NEWS b/NEWS
index c1054ccbdb156b23d7526f2f3893096e92b370ba..f4fe47fc3589fa0518a40112c3d8c59964078753 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -17,7 +17,7 @@ Version 2.22
   18007, 18019, 18020, 18029, 18030, 18032, 18036, 18038, 18039, 18042,
   18043, 18046, 18047, 18068, 18080, 18093, 18100, 18104, 18110, 18111,
   18125, 18128, 18138, 18185, 18197, 18206, 18210, 18211, 18247, 18287,
-  18319, 18333, 18346.
+  18319, 18333, 18346, 18397.
 
 * Cache information can be queried via sysconf() function on s390 e.g. with
   _SC_LEVEL1_ICACHE_SIZE as argument.
diff --git a/sysdeps/mips/mips32/fpu/Makefile b/sysdeps/mips/mips32/fpu/Makefile
new file mode 100644 (file)
index 0000000..951c408
--- /dev/null
@@ -0,0 +1,3 @@
+ifeq ($(subdir),math)
+aux += fpucw-helpers
+endif
similarity index 97%
rename from sysdeps/mips/mips32/fpu/fpu_control.c
rename to sysdeps/mips/mips32/fpu/fpucw-helpers.c
index eeb94c55c7a3b9b402ffa7bc79d4ae0bb609bb49..40391a3ec524471d7d7f546194f3cbb53a989155 100644 (file)
@@ -16,7 +16,7 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <math/fpu_control.c>
+#include <fpu_control.h>
 
 fpu_control_t
 __mips_fpu_getcw (void)