public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] MIPS, SPARC: fix wrong vfork aliases in libpthread.so
@ 2016-06-17 14:21 Aurelien Jarno
  2016-06-17 15:45 ` Joseph Myers
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Aurelien Jarno @ 2016-06-17 14:21 UTC (permalink / raw)
  To: libc-alpha; +Cc: Joseph Myers, David Miller, David Holsgrove, Aurelien Jarno

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.
---
 ChangeLog                                     | 7 +++++++
 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 ++
 4 files changed, 13 insertions(+)

Notes:
 - this has been initially reported in this Debian bug report:
   https://bugs.debian.org/827477
 - the issue has been found on mips, sparc32 and sparc64, but the fix
   has only been tested on mips
 - microblaze is likely impacted too, but I have no way to very it

diff --git a/ChangeLog b/ChangeLog
index e72ffb8..643aee8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2016-06-17  Aurelien Jarno  <aurelien@aurel32.net>
+
+	* 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.
+
 2016-06-16  Rajalakshmi Srinivasaraghavan  <raji@linux.vnet.ibm.com>
 
 	* NEWS: Mention addition of nextup and nextdown.
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.8.1

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] MIPS, SPARC: fix wrong vfork aliases in libpthread.so
  2016-06-17 14:21 [PATCH] MIPS, SPARC: fix wrong vfork aliases in libpthread.so Aurelien Jarno
@ 2016-06-17 15:45 ` Joseph Myers
  2016-06-18  4:29 ` David Miller
  2016-06-22  5:24 ` Aurelien Jarno
  2 siblings, 0 replies; 7+ messages in thread
From: Joseph Myers @ 2016-06-17 15:45 UTC (permalink / raw)
  To: Aurelien Jarno; +Cc: libc-alpha

On Fri, 17 Jun 2016, Aurelien Jarno wrote:

> 	* sysdeps/unix/sysv/linux/mips/vfork.S (__vfork): Conditionalize
> 	hidden_def, weak_alias and strong_alias on [IS_IN (libc)].

OK for MIPS.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] MIPS, SPARC: fix wrong vfork aliases in libpthread.so
  2016-06-17 14:21 [PATCH] MIPS, SPARC: fix wrong vfork aliases in libpthread.so Aurelien Jarno
  2016-06-17 15:45 ` Joseph Myers
@ 2016-06-18  4:29 ` David Miller
  2016-06-22  5:24 ` Aurelien Jarno
  2 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2016-06-18  4:29 UTC (permalink / raw)
  To: aurelien; +Cc: libc-alpha, joseph, david.holsgrove

From: Aurelien Jarno <aurelien@aurel32.net>
Date: Fri, 17 Jun 2016 16:21:03 +0200

> 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.

Sparc bits look fine to me.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] MIPS, SPARC: fix wrong vfork aliases in libpthread.so
  2016-06-17 14:21 [PATCH] MIPS, SPARC: fix wrong vfork aliases in libpthread.so Aurelien Jarno
  2016-06-17 15:45 ` Joseph Myers
  2016-06-18  4:29 ` David Miller
@ 2016-06-22  5:24 ` Aurelien Jarno
  2016-06-22 10:36   ` Joseph Myers
  2016-06-26 21:39   ` Aurelien Jarno
  2 siblings, 2 replies; 7+ messages in thread
From: Aurelien Jarno @ 2016-06-22  5:24 UTC (permalink / raw)
  To: libc-alpha; +Cc: Joseph Myers, David Miller, David Holsgrove

On 2016-06-17 16:21, Aurelien Jarno wrote:
> 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.

Unfortunately I failed to correctly run the testsuite and thus this
commit broke the libpthread ABI. Sorry about that.

The patch below does the remaining changes to align the MIPS and SPARC
vfork implementations with the other architectures. I have done a test
built and run the testsuite on mips64el, sparc32 and sparc64.

Aurelien



From: Aurelien Jarno <aurelien@aurel32.net>
Date: Tue, 21 Jun 2016 23:59:37 +0200
Subject: [PATCH] MIPS, SPARC: more fixes to the vfork aliases in libpthread.so

Commit 43c29487 tried to fix the vfork aliases in libpthread.so on MIPS
and SPARC, but failed to do it correctly, introducing an ABI change.

This patch does the remaining changes needed to align the MIPS and SPARC
vfork implementations with the other architectures. That way the the
alpha version of pt-vfork.S works correctly for MIPS and SPARC. The
changes for alpha were done in 82aab97c.

Changelog:
	* sysdeps/unix/sysv/linux/mips/vfork.S (__vfork): Rename into
	__libc_vfork.
	(__vfork) [IS_IN (libc)]: Remove alias.
	(__libc_vfork) [IS_IN (libc)]: Define as an alias.
	* sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: Likewise.
---
 ChangeLog                                     |  9 +++++++++
 sysdeps/unix/sysv/linux/mips/vfork.S          | 12 ++++++------
 sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S |  8 ++++----
 sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S |  8 ++++----
 4 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index e418cc0..307f33e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2016-06-21  Aurelien Jarno  <aurelien@aurel32.net>
+
+	* sysdeps/unix/sysv/linux/mips/vfork.S (__vfork): Rename into
+	__libc_vfork.
+	(__vfork) [IS_IN (libc)]: Remove alias.
+	(__libc_vfork) [IS_IN (libc)]: Define as an alias.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: Likewise.
+
 2016-06-21  Florian Weimer  <fweimer@redhat.com>
 
 	[BZ #20284]
diff --git a/sysdeps/unix/sysv/linux/mips/vfork.S b/sysdeps/unix/sysv/linux/mips/vfork.S
index c0c0ce6..1867c86 100644
--- a/sysdeps/unix/sysv/linux/mips/vfork.S
+++ b/sysdeps/unix/sysv/linux/mips/vfork.S
@@ -31,13 +31,13 @@
 LOCALSZ= 1
 FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
 GPOFF= FRAMESZ-(1*SZREG)
-NESTED(__vfork,FRAMESZ,sp)
+NESTED(__libc_vfork,FRAMESZ,sp)
 #ifdef __PIC__
 	SETUP_GP
 #endif
 	PTR_SUBU sp, FRAMESZ
 	cfi_adjust_cfa_offset (FRAMESZ)
-	SETUP_GP64_REG (a5, __vfork)
+	SETUP_GP64_REG (a5, __libc_vfork)
 #ifdef __PIC__
 	SAVE_GP (GPOFF)
 #endif
@@ -104,10 +104,10 @@ L(error):
 	RESTORE_GP64_REG
 	j		__syscall_error
 #endif
-	END(__vfork)
+	END(__libc_vfork)
 
 #if IS_IN (libc)
-libc_hidden_def(__vfork)
-weak_alias (__vfork, vfork)
-strong_alias (__vfork, __libc_vfork)
+weak_alias (__libc_vfork, vfork)
+strong_alias (__libc_vfork, __vfork)
+libc_hidden_def (__vfork)
 #endif
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S b/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
index 94f2c8d..0d0a3b5 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
@@ -21,7 +21,7 @@
 
 	.text
 	.globl		__syscall_error
-ENTRY(__vfork)
+ENTRY(__libc_vfork)
 	ld	[%g7 + PID], %o5
 	cmp	%o5, 0
 	bne	1f
@@ -42,10 +42,10 @@ ENTRY(__vfork)
 	 st	%o5, [%g7 + PID]
 1:	retl
 	 nop
-END(__vfork)
+END(__libc_vfork)
 
 #if IS_IN (libc)
+weak_alias (__libc_vfork, vfork)
+strong_alias (__libc_vfork, __vfork)
 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 a7479e9..0818eba 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
@@ -21,7 +21,7 @@
 
 	.text
 	.globl	__syscall_error
-ENTRY(__vfork)
+ENTRY(__libc_vfork)
 	ld	[%g7 + PID], %o5
 	sethi	%hi(0x80000000), %o3
 	cmp	%o5, 0
@@ -42,10 +42,10 @@ ENTRY(__vfork)
 	 st	%o5, [%g7 + PID]
 1:	retl
 	 nop
-END(__vfork)
+END(__libc_vfork)
 
 #if IS_IN (libc)
+weak_alias (__libc_vfork, vfork)
+strong_alias (__libc_vfork, __vfork)
 libc_hidden_def (__vfork)
-weak_alias (__vfork, vfork)
-strong_alias (__vfork, __libc_vfork)
 #endif
-- 
2.8.1


-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] MIPS, SPARC: fix wrong vfork aliases in libpthread.so
  2016-06-22  5:24 ` Aurelien Jarno
@ 2016-06-22 10:36   ` Joseph Myers
  2016-06-26 21:39   ` Aurelien Jarno
  1 sibling, 0 replies; 7+ messages in thread
From: Joseph Myers @ 2016-06-22 10:36 UTC (permalink / raw)
  To: Aurelien Jarno; +Cc: libc-alpha, David Miller, David Holsgrove

On Wed, 22 Jun 2016, Aurelien Jarno wrote:

> The patch below does the remaining changes to align the MIPS and SPARC
> vfork implementations with the other architectures. I have done a test
> built and run the testsuite on mips64el, sparc32 and sparc64.

OK for MIPS.

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] MIPS, SPARC: fix wrong vfork aliases in libpthread.so
  2016-06-22  5:24 ` Aurelien Jarno
  2016-06-22 10:36   ` Joseph Myers
@ 2016-06-26 21:39   ` Aurelien Jarno
  2016-06-27  7:49     ` David Miller
  1 sibling, 1 reply; 7+ messages in thread
From: Aurelien Jarno @ 2016-06-26 21:39 UTC (permalink / raw)
  To: libc-alpha, David Miller

On 2016-06-22 07:24, Aurelien Jarno wrote:
> On 2016-06-17 16:21, Aurelien Jarno wrote:
> > 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.
> 
> Unfortunately I failed to correctly run the testsuite and thus this
> commit broke the libpthread ABI. Sorry about that.
> 
> The patch below does the remaining changes to align the MIPS and SPARC
> vfork implementations with the other architectures. I have done a test
> built and run the testsuite on mips64el, sparc32 and sparc64.

David, does the patch below looks fine for SPARC?

> From: Aurelien Jarno <aurelien@aurel32.net>
> Date: Tue, 21 Jun 2016 23:59:37 +0200
> Subject: [PATCH] MIPS, SPARC: more fixes to the vfork aliases in libpthread.so
> 
> Commit 43c29487 tried to fix the vfork aliases in libpthread.so on MIPS
> and SPARC, but failed to do it correctly, introducing an ABI change.
> 
> This patch does the remaining changes needed to align the MIPS and SPARC
> vfork implementations with the other architectures. That way the the
> alpha version of pt-vfork.S works correctly for MIPS and SPARC. The
> changes for alpha were done in 82aab97c.
> 
> Changelog:
> 	* sysdeps/unix/sysv/linux/mips/vfork.S (__vfork): Rename into
> 	__libc_vfork.
> 	(__vfork) [IS_IN (libc)]: Remove alias.
> 	(__libc_vfork) [IS_IN (libc)]: Define as an alias.
> 	* sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: Likewise.
> 	* sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: Likewise.
> ---
>  ChangeLog                                     |  9 +++++++++
>  sysdeps/unix/sysv/linux/mips/vfork.S          | 12 ++++++------
>  sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S |  8 ++++----
>  sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S |  8 ++++----
>  4 files changed, 23 insertions(+), 14 deletions(-)
> 
> diff --git a/ChangeLog b/ChangeLog
> index e418cc0..307f33e 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,12 @@
> +2016-06-21  Aurelien Jarno  <aurelien@aurel32.net>
> +
> +	* sysdeps/unix/sysv/linux/mips/vfork.S (__vfork): Rename into
> +	__libc_vfork.
> +	(__vfork) [IS_IN (libc)]: Remove alias.
> +	(__libc_vfork) [IS_IN (libc)]: Define as an alias.
> +	* sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S: Likewise.
> +	* sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S: Likewise.
> +
>  2016-06-21  Florian Weimer  <fweimer@redhat.com>
>  
>  	[BZ #20284]
> diff --git a/sysdeps/unix/sysv/linux/mips/vfork.S b/sysdeps/unix/sysv/linux/mips/vfork.S
> index c0c0ce6..1867c86 100644
> --- a/sysdeps/unix/sysv/linux/mips/vfork.S
> +++ b/sysdeps/unix/sysv/linux/mips/vfork.S
> @@ -31,13 +31,13 @@
>  LOCALSZ= 1
>  FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
>  GPOFF= FRAMESZ-(1*SZREG)
> -NESTED(__vfork,FRAMESZ,sp)
> +NESTED(__libc_vfork,FRAMESZ,sp)
>  #ifdef __PIC__
>  	SETUP_GP
>  #endif
>  	PTR_SUBU sp, FRAMESZ
>  	cfi_adjust_cfa_offset (FRAMESZ)
> -	SETUP_GP64_REG (a5, __vfork)
> +	SETUP_GP64_REG (a5, __libc_vfork)
>  #ifdef __PIC__
>  	SAVE_GP (GPOFF)
>  #endif
> @@ -104,10 +104,10 @@ L(error):
>  	RESTORE_GP64_REG
>  	j		__syscall_error
>  #endif
> -	END(__vfork)
> +	END(__libc_vfork)
>  
>  #if IS_IN (libc)
> -libc_hidden_def(__vfork)
> -weak_alias (__vfork, vfork)
> -strong_alias (__vfork, __libc_vfork)
> +weak_alias (__libc_vfork, vfork)
> +strong_alias (__libc_vfork, __vfork)
> +libc_hidden_def (__vfork)
>  #endif
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S b/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
> index 94f2c8d..0d0a3b5 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S
> @@ -21,7 +21,7 @@
>  
>  	.text
>  	.globl		__syscall_error
> -ENTRY(__vfork)
> +ENTRY(__libc_vfork)
>  	ld	[%g7 + PID], %o5
>  	cmp	%o5, 0
>  	bne	1f
> @@ -42,10 +42,10 @@ ENTRY(__vfork)
>  	 st	%o5, [%g7 + PID]
>  1:	retl
>  	 nop
> -END(__vfork)
> +END(__libc_vfork)
>  
>  #if IS_IN (libc)
> +weak_alias (__libc_vfork, vfork)
> +strong_alias (__libc_vfork, __vfork)
>  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 a7479e9..0818eba 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S
> @@ -21,7 +21,7 @@
>  
>  	.text
>  	.globl	__syscall_error
> -ENTRY(__vfork)
> +ENTRY(__libc_vfork)
>  	ld	[%g7 + PID], %o5
>  	sethi	%hi(0x80000000), %o3
>  	cmp	%o5, 0
> @@ -42,10 +42,10 @@ ENTRY(__vfork)
>  	 st	%o5, [%g7 + PID]
>  1:	retl
>  	 nop
> -END(__vfork)
> +END(__libc_vfork)
>  
>  #if IS_IN (libc)
> +weak_alias (__libc_vfork, vfork)
> +strong_alias (__libc_vfork, __vfork)
>  libc_hidden_def (__vfork)
> -weak_alias (__vfork, vfork)
> -strong_alias (__vfork, __libc_vfork)
>  #endif
> -- 
> 2.8.1
> 
> 
> -- 
> Aurelien Jarno                          GPG: 4096R/1DDD8C9B
> aurelien@aurel32.net                 http://www.aurel32.net
> 

-- 
Aurelien Jarno                          GPG: 4096R/1DDD8C9B
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] MIPS, SPARC: fix wrong vfork aliases in libpthread.so
  2016-06-26 21:39   ` Aurelien Jarno
@ 2016-06-27  7:49     ` David Miller
  0 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2016-06-27  7:49 UTC (permalink / raw)
  To: aurelien; +Cc: libc-alpha

From: Aurelien Jarno <aurelien@aurel32.net>
Date: Sun, 26 Jun 2016 23:39:35 +0200

> On 2016-06-22 07:24, Aurelien Jarno wrote:
>> On 2016-06-17 16:21, Aurelien Jarno wrote:
>> > 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.
>> 
>> Unfortunately I failed to correctly run the testsuite and thus this
>> commit broke the libpthread ABI. Sorry about that.
>> 
>> The patch below does the remaining changes to align the MIPS and SPARC
>> vfork implementations with the other architectures. I have done a test
>> built and run the testsuite on mips64el, sparc32 and sparc64.
> 
> David, does the patch below looks fine for SPARC?

Yep :-)

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-06-27  7:49 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-17 14:21 [PATCH] MIPS, SPARC: fix wrong vfork aliases in libpthread.so Aurelien Jarno
2016-06-17 15:45 ` Joseph Myers
2016-06-18  4:29 ` David Miller
2016-06-22  5:24 ` Aurelien Jarno
2016-06-22 10:36   ` Joseph Myers
2016-06-26 21:39   ` Aurelien Jarno
2016-06-27  7:49     ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).