This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH roland/nptl-mips] MIPS: Consolidate NPTL/non versions of vfork
- From: Roland McGrath <roland at hack dot frob dot com>
- To: "GNU C. Library" <libc-alpha at sourceware dot org>
- Date: Wed, 25 Jun 2014 15:01:24 -0700 (PDT)
- Subject: [PATCH roland/nptl-mips] MIPS: Consolidate NPTL/non versions of vfork
- Authentication-results: sourceware.org; auth=none
Not tested at all. It looks to me like MIPS calls don't use a PLT per se,
but always load from the GOT and then do a proper tail call via register.
So I think the generic pt-vfork.c is safe even without IFUNC, but you tell me.
Thanks,
Roland
2014-06-25 Roland McGrath <roland@hack.frob.com>
* sysdeps/unix/sysv/linux/mips/clone.S: Deconditionalize the code
that was previously under [RESET_PID].
* sysdeps/unix/sysv/linux/mips/nptl/clone.S: File removed.
diff --git a/sysdeps/unix/sysv/linux/mips/clone.S b/sysdeps/unix/sysv/linux/mips/clone.S
index d3fd80f..286a6b9 100644
--- a/sysdeps/unix/sysv/linux/mips/clone.S
+++ b/sysdeps/unix/sysv/linux/mips/clone.S
@@ -23,9 +23,7 @@
#include <sysdep.h>
#define _ERRNO_H 1
#include <bits/errno.h>
-#ifdef RESET_PID
#include <tls.h>
-#endif
#define CLONE_VM 0x00000100
#define CLONE_THREAD 0x00010000
@@ -69,9 +67,7 @@ NESTED(__clone,4*SZREG,sp)
PTR_SUBU a1,32 /* Reserve argument save space. */
PTR_S a0,0(a1) /* Save function pointer. */
PTR_S a3,PTRSIZE(a1) /* Save argument pointer. */
-#ifdef RESET_PID
LONG_S a2,(PTRSIZE*2)(a1) /* Save clone flags. */
-#endif
move a0,a2
@@ -134,13 +130,11 @@ L(thread_start):
SAVE_GP (GPOFF)
/* The stackframe has been created on entry of clone(). */
-#ifdef RESET_PID
/* Check and see if we need to reset the PID. */
LONG_L a0,(PTRSIZE*2)(sp)
and a1,a0,CLONE_THREAD
beqz a1,L(restore_pid)
L(donepid):
-#endif
/* Restore the arg for user's function. */
PTR_L t9,0(sp) /* Function pointer. */
@@ -158,7 +152,6 @@ L(donepid):
jal _exit
#endif
-#ifdef RESET_PID
L(restore_pid):
and a1,a0,CLONE_VM
li v0,-1
@@ -170,7 +163,6 @@ L(gotpid):
INT_S v0,PID_OFFSET(v1)
INT_S v0,TID_OFFSET(v1)
b L(donepid)
-#endif
END(__thread_start)
diff --git a/sysdeps/unix/sysv/linux/mips/nptl/clone.S b/sysdeps/unix/sysv/linux/mips/nptl/clone.S
deleted file mode 100644
index 80c265b..0000000
--- a/sysdeps/unix/sysv/linux/mips/nptl/clone.S
+++ /dev/null
@@ -1,2 +0,0 @@
-#define RESET_PID
-#include <sysdeps/unix/sysv/linux/mips/clone.S>