summary refs log tree commit diff
diff options
context:
space:
mode:
authorDylan Alex Simon <dylan-sourceware@dylex.net>2016-03-15 13:20:01 -0400
committerMike Frysinger <vapier@gentoo.org>2016-03-21 02:07:51 -0400
commitf9378ac3773ffe998a2b3406568778ee9f77f759 (patch)
tree4c4ef1c7a1e7f94c6601cada058180c276dd05ca
parent6bc81cf205a1f4c14d5ac8e664cf1126a5d2acab (diff)
downloadglibc-f9378ac3773ffe998a2b3406568778ee9f77f759.tar.gz
glibc-f9378ac3773ffe998a2b3406568778ee9f77f759.tar.xz
glibc-f9378ac3773ffe998a2b3406568778ee9f77f759.zip
math: don't clobber old libm.so on install [BZ #19822]
When installing glibc (w/mathvec enabled) in-place on a system with
a glibc w/out mathvec enabled, the install will clobber the existing
libm.so (e.g., /lib64/libm-2.21.so) with a linker script.  This is
because libm.so is a symlink to libm.so.6 which is a symlink to the
final libm-2.21.so file.  When the makefile writes the linker script
directly to libm.so, it gets clobbered.

The simple patch below to math/Makefile fixes this.  It is based on
the nptl Makefile, which does exactly the same thing in a safer way.
-rw-r--r--ChangeLog6
-rw-r--r--math/Makefile3
2 files changed, 8 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 6bd5a11769..17c9dc054c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-03-21  Dylan Alex Simon  <dylan-sourceware@dylex.net>
+
+	[BZ #19822]
+	* math/Makefile ($(inst_libdir)/libm.so): Write output to $@.tmp and
+	move it to the final $@ location.
+
 2016-03-20  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	* sysdeps/unix/sysv/linux/spawni.c (__spawnix): Fix invalid memory
diff --git a/math/Makefile b/math/Makefile
index b952124999..d440833f4d 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -100,7 +100,8 @@ $(inst_libdir)/libm.so: $(common-objpfx)format.lds \
 	 cat $<; \
 	 echo 'GROUP ( $(slibdir)/libm.so$(libm.so-version) ' \
 	      'AS_NEEDED ( $(libdir)/libmvec_nonshared.a $(slibdir)/libmvec.so$(libmvec.so-version) ) )' \
-	) > $@
+	) > $@.new
+	mv -f $@.new $@
 endif
 
 # Rules for the test suite.