mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
MIPS, SPARC: more fixes to the vfork aliases in libpthread.so
Commit43c29487
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 in82aab97c
. 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.
This commit is contained in:
@ -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-24 Torvald Riegel <triegel@redhat.com>
|
2016-06-24 Torvald Riegel <triegel@redhat.com>
|
||||||
|
|
||||||
* nscd/cache.c (cache_add): Use new C11-like atomic operation instead
|
* nscd/cache.c (cache_add): Use new C11-like atomic operation instead
|
||||||
|
@ -31,13 +31,13 @@
|
|||||||
LOCALSZ= 1
|
LOCALSZ= 1
|
||||||
FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
|
FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
|
||||||
GPOFF= FRAMESZ-(1*SZREG)
|
GPOFF= FRAMESZ-(1*SZREG)
|
||||||
NESTED(__vfork,FRAMESZ,sp)
|
NESTED(__libc_vfork,FRAMESZ,sp)
|
||||||
#ifdef __PIC__
|
#ifdef __PIC__
|
||||||
SETUP_GP
|
SETUP_GP
|
||||||
#endif
|
#endif
|
||||||
PTR_SUBU sp, FRAMESZ
|
PTR_SUBU sp, FRAMESZ
|
||||||
cfi_adjust_cfa_offset (FRAMESZ)
|
cfi_adjust_cfa_offset (FRAMESZ)
|
||||||
SETUP_GP64_REG (a5, __vfork)
|
SETUP_GP64_REG (a5, __libc_vfork)
|
||||||
#ifdef __PIC__
|
#ifdef __PIC__
|
||||||
SAVE_GP (GPOFF)
|
SAVE_GP (GPOFF)
|
||||||
#endif
|
#endif
|
||||||
@ -104,10 +104,10 @@ L(error):
|
|||||||
RESTORE_GP64_REG
|
RESTORE_GP64_REG
|
||||||
j __syscall_error
|
j __syscall_error
|
||||||
#endif
|
#endif
|
||||||
END(__vfork)
|
END(__libc_vfork)
|
||||||
|
|
||||||
#if IS_IN (libc)
|
#if IS_IN (libc)
|
||||||
libc_hidden_def(__vfork)
|
weak_alias (__libc_vfork, vfork)
|
||||||
weak_alias (__vfork, vfork)
|
strong_alias (__libc_vfork, __vfork)
|
||||||
strong_alias (__vfork, __libc_vfork)
|
libc_hidden_def (__vfork)
|
||||||
#endif
|
#endif
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
.globl __syscall_error
|
.globl __syscall_error
|
||||||
ENTRY(__vfork)
|
ENTRY(__libc_vfork)
|
||||||
ld [%g7 + PID], %o5
|
ld [%g7 + PID], %o5
|
||||||
cmp %o5, 0
|
cmp %o5, 0
|
||||||
bne 1f
|
bne 1f
|
||||||
@ -42,10 +42,10 @@ ENTRY(__vfork)
|
|||||||
st %o5, [%g7 + PID]
|
st %o5, [%g7 + PID]
|
||||||
1: retl
|
1: retl
|
||||||
nop
|
nop
|
||||||
END(__vfork)
|
END(__libc_vfork)
|
||||||
|
|
||||||
#if IS_IN (libc)
|
#if IS_IN (libc)
|
||||||
|
weak_alias (__libc_vfork, vfork)
|
||||||
|
strong_alias (__libc_vfork, __vfork)
|
||||||
libc_hidden_def (__vfork)
|
libc_hidden_def (__vfork)
|
||||||
weak_alias (__vfork, vfork)
|
|
||||||
strong_alias (__vfork, __libc_vfork)
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
.globl __syscall_error
|
.globl __syscall_error
|
||||||
ENTRY(__vfork)
|
ENTRY(__libc_vfork)
|
||||||
ld [%g7 + PID], %o5
|
ld [%g7 + PID], %o5
|
||||||
sethi %hi(0x80000000), %o3
|
sethi %hi(0x80000000), %o3
|
||||||
cmp %o5, 0
|
cmp %o5, 0
|
||||||
@ -42,10 +42,10 @@ ENTRY(__vfork)
|
|||||||
st %o5, [%g7 + PID]
|
st %o5, [%g7 + PID]
|
||||||
1: retl
|
1: retl
|
||||||
nop
|
nop
|
||||||
END(__vfork)
|
END(__libc_vfork)
|
||||||
|
|
||||||
#if IS_IN (libc)
|
#if IS_IN (libc)
|
||||||
|
weak_alias (__libc_vfork, vfork)
|
||||||
|
strong_alias (__libc_vfork, __vfork)
|
||||||
libc_hidden_def (__vfork)
|
libc_hidden_def (__vfork)
|
||||||
weak_alias (__vfork, vfork)
|
|
||||||
strong_alias (__vfork, __libc_vfork)
|
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user