123 lines
3.5 KiB
Diff
123 lines
3.5 KiB
Diff
|
From b87c1ec3fa398646f042a68f0ce0f7d09c1348c7 Mon Sep 17 00:00:00 2001
|
||
|
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.
|
||
|
|
||
|
[Vincent: do not patch ChangeLog]
|
||
|
|
||
|
Signed-off-by: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
|
||
|
---
|
||
|
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 ++++----
|
||
|
3 files changed, 14 insertions(+), 14 deletions(-)
|
||
|
|
||
|
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.7.3
|
||
|
|