diff options
author | Aurelien Jarno <aurelien@aurel32.net> | 2016-06-18 19:11:23 +0200 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2016-06-18 19:11:23 +0200 |
commit | 43c2948756bb6e144c7b871e827bba37d61ad3a3 (patch) | |
tree | f9c9a59b0c6a48c02a19451fbdc83dd3752cf5b5 /sysdeps/unix | |
parent | 41a359e22f3a85a570bd5fd94496d02959fe8394 (diff) | |
download | glibc-43c2948756bb6e144c7b871e827bba37d61ad3a3.zip glibc-43c2948756bb6e144c7b871e827bba37d61ad3a3.tar.gz glibc-43c2948756bb6e144c7b871e827bba37d61ad3a3.tar.bz2 |
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.
Diffstat (limited to 'sysdeps/unix')
-rw-r--r-- | sysdeps/unix/sysv/linux/mips/vfork.S | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S | 2 |
3 files changed, 6 insertions, 0 deletions
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 |