summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2014-12-30 19:58:05 -0500
committerMark H Weaver <mhw@netris.org>2014-12-30 19:58:05 -0500
commitbf0baaf7db6c3ab7d54f274a8728612e323b1b08 (patch)
treeedd77631cc92a91e20cf779aae9f6b2862edee84
parent26804e1351a86bfcde1b8bebeb984b9c79e6fe6f (diff)
downloadguix-bf0baaf7db6c3ab7d54f274a8728612e323b1b08.tar.gz
gnu: glibc: MIPS: Avoid a dangling `vfork@GLIBC_2.0' reference.
* gnu/packages/patches/glibc-mips-dangling-vfork-ref.patch: New file.
* gnu-system.am (dist_patch_DATA): Add it.
* gnu/packages/base.scm (glibc): Add patch.
-rw-r--r--gnu-system.am1
-rw-r--r--gnu/packages/base.scm1
-rw-r--r--gnu/packages/patches/glibc-mips-dangling-vfork-ref.patch45
3 files changed, 47 insertions, 0 deletions
diff --git a/gnu-system.am b/gnu-system.am
index 729d185d47..405c01fb07 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -366,6 +366,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/glibc-CVE-2014-7817.patch		\
   gnu/packages/patches/glibc-bootstrap-system.patch		\
   gnu/packages/patches/glibc-ldd-x86_64.patch			\
+  gnu/packages/patches/glibc-mips-dangling-vfork-ref.patch	\
   gnu/packages/patches/gnunet-fix-scheduler.patch		\
   gnu/packages/patches/gnunet-fix-tests.patch    		\
   gnu/packages/patches/gobject-introspection-cc.patch		\
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 117ee74b97..1f479ccbbe 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -377,6 +377,7 @@ included.")
             (modules '((guix build utils)))
             (patches (list (search-patch "glibc-CVE-2014-7817.patch")
                            (search-patch "glibc-CVE-2012-3406.patch")
+                           (search-patch "glibc-mips-dangling-vfork-ref.patch")
                            (search-patch "glibc-ldd-x86_64.patch")))))
    (build-system gnu-build-system)
 
diff --git a/gnu/packages/patches/glibc-mips-dangling-vfork-ref.patch b/gnu/packages/patches/glibc-mips-dangling-vfork-ref.patch
new file mode 100644
index 0000000000..852b6de669
--- /dev/null
+++ b/gnu/packages/patches/glibc-mips-dangling-vfork-ref.patch
@@ -0,0 +1,45 @@
+Avoid a dangling `vfork@GLIBC_2.0' reference on MIPS.
+
+Note: Here the ChangeLog and NEWS updates are removed from Maciej's
+      patch, since they depend on other earlier commits.
+
+From: Maciej W. Rozycki <macro@codesourcery.com>
+Date: Wed, 22 Oct 2014 14:20:37 +0000 (+0100)
+Subject: MIPS: Avoid a dangling `vfork@GLIBC_2.0' reference
+X-Git-Url: https://sourceware.org/git/?p=glibc.git;a=commitdiff_plain;h=c14e752fc73d34c75d4f84f37fea8e0b1734cf98
+
+MIPS: Avoid a dangling `vfork@GLIBC_2.0' reference
+
+This satisfies a symbol reference created with:
+
+	.symver	__libc_vfork, vfork@GLIBC_2.0
+
+where `__libc_vfork' has not been defined or referenced.  In this case
+the `vfork@GLIBC_2.0' reference is supposed to be discarded, however a
+bug present in GAS since forever causes an undefined symbol table entry
+to be created.  This in turn triggers a problem in the linker that can
+manifest itself by link errors such as:
+
+ld: libpthread.so: invalid string offset 2765592330 >= 5154 for section `.dynstr'
+
+The GAS and linker bugs need to be resolved, but we can avoid them too
+by providing a `__libc_vfork' definition just like our other platforms.
+
+	[BZ #17485]
+	* sysdeps/unix/sysv/linux/mips/vfork.S (__libc_vfork): Define.
+
+(cherry picked from commit b5af9297d51a43f96c5be1bafab032184690dd6f)
+
+Conflicts:
+	NEWS
+---
+
+diff --git a/sysdeps/unix/sysv/linux/mips/vfork.S b/sysdeps/unix/sysv/linux/mips/vfork.S
+index 80c362d..2c1a747 100644
+--- a/sysdeps/unix/sysv/linux/mips/vfork.S
++++ b/sysdeps/unix/sysv/linux/mips/vfork.S
+@@ -108,3 +108,4 @@ L(error):
+ 
+ libc_hidden_def(__vfork)
+ weak_alias (__vfork, vfork)
++strong_alias (__vfork, __libc_vfork)