From 19e9aaec52a4b61d208ace8ca952216b7d5c7175 Mon Sep 17 00:00:00 2001 From: Aurelien Jarno 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. (cherry picked from commit b87c1ec3fa398646f042a68f0ce0f7d09c1348c7) --- 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 0d3a8025cb2..32e31642bda 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-18 Aurelien Jarno * sysdeps/unix/sysv/linux/mips/vfork.S (__vfork): Conditionalize diff --git a/sysdeps/unix/sysv/linux/mips/vfork.S b/sysdeps/unix/sysv/linux/mips/vfork.S index 60a91310ff8..e06c4e988bb 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 3727877fd3f..c42ba9b50cc 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 7bf5165b8ec..506490c54a2 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.47.2