77 lines
2.6 KiB
Diff
77 lines
2.6 KiB
Diff
|
From 43c2948756bb6e144c7b871e827bba37d61ad3a3 Mon Sep 17 00:00:00 2001
|
||
|
From: Aurelien Jarno <aurelien@aurel32.net>
|
||
|
Date: Sat, 18 Jun 2016 19:11:23 +0200
|
||
|
Subject: [PATCH] MIPS, SPARC: fix wrong vfork aliases in libpthread.so
|
||
|
|
||
|
With recent binutils versions the GNU libc fails to build on at least
|
||
|
MISP and SPARC, with this kind of error:
|
||
|
|
||
|
/home/aurel32/glibc/glibc-build/nptl/libpthread.so:(*IND*+0x0): multiple definition of `vfork@GLIBC_2.0'
|
||
|
/home/aurel32/glibc/glibc-build/nptl/libpthread.so::(.text+0xee50): first defined here
|
||
|
|
||
|
It appears that on these architectures pt-vfork.S includes vfork.S
|
||
|
(through the alpha version of pt-vfork.S) and that the __vfork aliases
|
||
|
are not conditionalized on IS_IN (libc) like on other architectures.
|
||
|
Therefore the aliases are also wrongly included in libpthread.so.
|
||
|
|
||
|
Fix this by properly conditionalizing the aliases like on other
|
||
|
architectures.
|
||
|
|
||
|
Changelog:
|
||
|
* sysdeps/unix/sysv/linux/mips/vfork.S (__vfork): Conditionalize
|
||
|
hidden_def, weak_alias and strong_alias on [IS_IN (libc)].
|
||
|
* sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: Likewise.
|
||
|
* sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: Likewise.
|
||
|
|
||
|
[Vincent: do not patch ChangeLog]
|
||
|
|
||
|
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
|
||
|
---
|
||
|
sysdeps/unix/sysv/linux/mips/vfork.S | 2 ++
|
||
|
sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S | 2 ++
|
||
|
sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S | 2 ++
|
||
|
3 files changed, 6 insertions(+)
|
||
|
|
||
|
diff --git a/sysdeps/unix/sysv/linux/mips/vfork.S b/sysdeps/unix/sysv/linux/mips/vfork.S
|
||
|
index 8c66151..c0c0ce6 100644
|
||
|
--- a/sysdeps/unix/sysv/linux/mips/vfork.S
|
||
|
+++ b/sysdeps/unix/sysv/linux/mips/vfork.S
|
||
|
@@ -106,6 +106,8 @@ L(error):
|
||
|
#endif
|
||
|
END(__vfork)
|
||
|
|
||
|
+#if IS_IN (libc)
|
||
|
libc_hidden_def(__vfork)
|
||
|
weak_alias (__vfork, vfork)
|
||
|
strong_alias (__vfork, __libc_vfork)
|
||
|
+#endif
|
||
|
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S b/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
|
||
|
index dc32e0a..94f2c8d 100644
|
||
|
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
|
||
|
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
|
||
|
@@ -44,6 +44,8 @@ ENTRY(__vfork)
|
||
|
nop
|
||
|
END(__vfork)
|
||
|
|
||
|
+#if IS_IN (libc)
|
||
|
libc_hidden_def (__vfork)
|
||
|
weak_alias (__vfork, vfork)
|
||
|
strong_alias (__vfork, __libc_vfork)
|
||
|
+#endif
|
||
|
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S b/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
|
||
|
index 05be3c2..a7479e9 100644
|
||
|
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
|
||
|
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
|
||
|
@@ -44,6 +44,8 @@ ENTRY(__vfork)
|
||
|
nop
|
||
|
END(__vfork)
|
||
|
|
||
|
+#if IS_IN (libc)
|
||
|
libc_hidden_def (__vfork)
|
||
|
weak_alias (__vfork, vfork)
|
||
|
strong_alias (__vfork, __libc_vfork)
|
||
|
+#endif
|
||
|
--
|
||
|
2.7.3
|
||
|
|