about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-05-11 22:58:10 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-05-11 22:58:10 +0000
commit34cb304e5a6df706e186d504b69af974bfc15a2f (patch)
treef7dc110200e0c4df2808076576c3481d497ea6ac
parentb13b96ca05a132a12dc5f3712b99e626670716bf (diff)
downloadglibc-34cb304e5a6df706e186d504b69af974bfc15a2f.tar.gz
glibc-34cb304e5a6df706e186d504b69af974bfc15a2f.tar.xz
glibc-34cb304e5a6df706e186d504b69af974bfc15a2f.zip
Fix mips16 __fpu_control static linking (bug 18397).
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.
-rw-r--r--ChangeLog8
-rw-r--r--NEWS2
-rw-r--r--sysdeps/mips/mips32/fpu/Makefile3
-rw-r--r--sysdeps/mips/mips32/fpu/fpucw-helpers.c (renamed from sysdeps/mips/mips32/fpu/fpu_control.c)2
4 files changed, 13 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 05c23e75b1..c998dd59b8 100644
--- 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 c1054ccbdb..f4fe47fc35 100644
--- 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
index 0000000000..951c408423
--- /dev/null
+++ b/sysdeps/mips/mips32/fpu/Makefile
@@ -0,0 +1,3 @@
+ifeq ($(subdir),math)
+aux += fpucw-helpers
+endif
diff --git a/sysdeps/mips/mips32/fpu/fpu_control.c b/sysdeps/mips/mips32/fpu/fpucw-helpers.c
index eeb94c55c7..40391a3ec5 100644
--- a/sysdeps/mips/mips32/fpu/fpu_control.c
+++ b/sysdeps/mips/mips32/fpu/fpucw-helpers.c
@@ -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)