From: Aurelien Jarno Date: Tue, 21 Jun 2016 21:59:37 +0000 (+0200) Subject: MIPS, SPARC: more fixes to the vfork aliases in libpthread.so X-Git-Tag: glibc-2.24~67 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b87c1ec3fa398646f042a68f0ce0f7d09c1348c7;p=thirdparty%2Fglibc.git 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. --- diff --git a/ChangeLog b/ChangeLog index eaf8fed1183..0847c8dda6d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2016-06-21 Aurelien Jarno + + * 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-24 Torvald Riegel * nscd/cache.c (cache_add): Use new C11-like atomic operation instead diff --git a/sysdeps/unix/sysv/linux/mips/vfork.S b/sysdeps/unix/sysv/linux/mips/vfork.S index c0c0ce69915..1867c8626eb 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 94f2c8d3e45..0d0a3b52982 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 a7479e9f25c..0818eba02e3 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