This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.19-588-g1d2a049


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  1d2a0492040bf698f2644f217195c68bb293fb60 (commit)
       via  11b9e55b6768241150f31626eddacc4ee7737c4e (commit)
      from  0f6901d0a14a99b1e7c741fe694d392a259cb361 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=1d2a0492040bf698f2644f217195c68bb293fb60

commit 1d2a0492040bf698f2644f217195c68bb293fb60
Author: Andreas Schwab <schwab@linux-m68k.org>
Date:   Sat Jun 14 15:04:16 2014 +0200

    m68k: Consolidate NPTL/non versions of clone

diff --git a/ChangeLog b/ChangeLog
index bb46fd2..5c14adf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2014-06-14  Andreas Schwab  <schwab@linux-m68k.org>
 
+	* sysdeps/unix/sysv/linux/m68k/clone.S: Deconditionalize the code
+	that was previously under [RESET_PID].
+	* sysdeps/unix/sysv/linux/m68k/nptl/clone.S: Remove file.
+
 	* sysdeps/unix/sysv/linux/m68k/pt-vfork.c: New file.
 	* sysdeps/unix/sysv/linux/m68k/nptl/pt-vfork.S: Remove file.
 	* sysdeps/unix/sysv/linux/m68k/vfork.S: Include <tcb-offsets.h>.
diff --git a/sysdeps/unix/sysv/linux/m68k/clone.S b/sysdeps/unix/sysv/linux/m68k/clone.S
index 764f572..e3480f6 100644
--- a/sysdeps/unix/sysv/linux/m68k/clone.S
+++ b/sysdeps/unix/sysv/linux/m68k/clone.S
@@ -22,9 +22,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
@@ -101,7 +99,6 @@ thread_start:
 	cfi_startproc
 	cfi_undefined (pc)	/* Mark end of stack */
 	subl	%fp, %fp	/* terminate the stack frame */
-#ifdef RESET_PID
 	/* Check and see if we need to reset the PID.  */
 	movel	%d1, %a1
 	andl	#CLONE_THREAD, %d1
@@ -121,7 +118,6 @@ gotpid:
 	movel	%d0, TID_OFFSET(%a0)
 	movel	(%sp)+, %a0
 donepid:
-#endif
 	jsr	(%a0)
 	movel	%d0, %d1
 	movel	#SYS_ify (exit), %d0
diff --git a/sysdeps/unix/sysv/linux/m68k/nptl/clone.S b/sysdeps/unix/sysv/linux/m68k/nptl/clone.S
deleted file mode 100644
index e7388fe..0000000
--- a/sysdeps/unix/sysv/linux/m68k/nptl/clone.S
+++ /dev/null
@@ -1,2 +0,0 @@
-#define RESET_PID
-#include "../clone.S"

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=11b9e55b6768241150f31626eddacc4ee7737c4e

commit 11b9e55b6768241150f31626eddacc4ee7737c4e
Author: Andreas Schwab <schwab@linux-m68k.org>
Date:   Sat Jun 14 14:47:09 2014 +0200

    m68k: Consolidate NPTL/non versions of vfork

diff --git a/ChangeLog b/ChangeLog
index 99e7e8b..bb46fd2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2014-06-14  Andreas Schwab  <schwab@linux-m68k.org>
+
+	* sysdeps/unix/sysv/linux/m68k/pt-vfork.c: New file.
+	* sysdeps/unix/sysv/linux/m68k/nptl/pt-vfork.S: Remove file.
+	* sysdeps/unix/sysv/linux/m68k/vfork.S: Include <tcb-offsets.h>.
+	(__vfork): Incorporate save/restore of PID from nptl/vfork.S here.
+	(__libc_vfork): New strong alias.
+	* sysdeps/unix/sysv/linux/m68k/nptl/vfork.S: Remove file.
+
 2014-06-14 Andi Kleen  <ak@linux.intel.com>
 
 	* sysdeps/generic/elide.h: New file.
diff --git a/sysdeps/unix/sysv/linux/m68k/nptl/pt-vfork.S b/sysdeps/unix/sysv/linux/m68k/nptl/pt-vfork.S
deleted file mode 100644
index 0689e68..0000000
--- a/sysdeps/unix/sysv/linux/m68k/nptl/pt-vfork.S
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 2010-2014 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Maxim Kuvyrkov <maxim@codesourcery.com>, 2010.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <tcb-offsets.h>
-
-#define SAVE_PID \
-	bsrl	__m68k_read_tp@PLTPC	; /* Get the thread pointer.  */ \
-	movel	%a0, %a1		; /* Save TP for RESTORE_PID.  */ \
-	movel	PID_OFFSET(%a1), %d0	; /* Get the PID.  */ \
-	movel	%d0, %d1		; /* Save PID for RESTORE_PID.  */ \
-	negl	%d0			; /* Negate the PID.  */ \
-	movel	%d0, PID_OFFSET(%a1)	; /* Store the temporary PID.  */
-
-#define RESTORE_PID \
-	tstl	%d0			; \
-	beq	1f			; /* If we are the parent... */ \
-	movel	%d1, PID_OFFSET(%a1)	; /* Restore the PID.  */ \
-1:
-
-#include <sysdeps/unix/sysv/linux/m68k/vfork.S>
diff --git a/sysdeps/unix/sysv/linux/m68k/nptl/vfork.S b/sysdeps/unix/sysv/linux/m68k/nptl/vfork.S
deleted file mode 100644
index ab52fa8..0000000
--- a/sysdeps/unix/sysv/linux/m68k/nptl/vfork.S
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 2010-2014 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Maxim Kuvyrkov <maxim@codesourcery.com>, 2010.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <tcb-offsets.h>
-
-#define SAVE_PID \
-	bsrl	__m68k_read_tp@PLTPC	; /* Get the thread pointer.  */ \
-	movel	%a0, %a1		; /* Save TP for RESTORE_PID.  */ \
-	movel	PID_OFFSET(%a1), %d0	; /* Get the PID.  */ \
-	movel	%d0, %d1		; /* Save PID for RESTORE_PID.  */ \
-	negl	%d0			; /* Negate the PID.  */ \
-	bne	1f			; /* If it was zero... */ \
-	movel	#0x80000000, %d0	; /* use 0x80000000 instead.  */ \
-1:	movel	%d0, PID_OFFSET(%a1)	; /* Store the temporary PID.  */
-
-#define RESTORE_PID \
-	tstl	%d0			; \
-	beq	1f			; /* If we are the parent... */ \
-	movel	%d1, PID_OFFSET(%a1)	; /* Restore the PID.  */ \
-1:
-
-#include <sysdeps/unix/sysv/linux/m68k/vfork.S>
diff --git a/sysdeps/unix/sysv/linux/m68k/pt-vfork.c b/sysdeps/unix/sysv/linux/m68k/pt-vfork.c
new file mode 100644
index 0000000..5fbc652
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/m68k/pt-vfork.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/aarch64/pt-vfork.c>
diff --git a/sysdeps/unix/sysv/linux/m68k/vfork.S b/sysdeps/unix/sysv/linux/m68k/vfork.S
index 3745287..30fa628 100644
--- a/sysdeps/unix/sysv/linux/m68k/vfork.S
+++ b/sysdeps/unix/sysv/linux/m68k/vfork.S
@@ -20,14 +20,7 @@
 #define _ERRNO_H	1
 #include <bits/errno.h>
 #include <kernel-features.h>
-
-#ifndef SAVE_PID
-#define SAVE_PID
-#endif
-
-#ifndef RESTORE_PID
-#define RESTORE_PID
-#endif
+#include <tcb-offsets.h>
 
 /* Clone the calling process, but without copying the whole address space.
    The calling process is suspended until the new process exits or is
@@ -36,10 +29,17 @@
 
 ENTRY (__vfork)
 
-	/* SAVE_PID clobbers call-clobbered registers and
-	   saves data in D1 and A1.  */
-
-	SAVE_PID
+	/* Save the TCB-cached PID away in %d1, and then negate the TCB
+	   field.  But if it's zero, set it to 0x80000000 instead.  See
+	   raise.c for the logic that relies on this value.  */
+	jbsr	__m68k_read_tp@PLTPC
+	movel	%a0, %a1
+	movel	PID_OFFSET(%a1), %d0
+	movel	%d0, %d1
+	negl	%d0
+	jne	1f
+	movel	#0x80000000, %d0
+1:	movel	%d0, PID_OFFSET(%a1)
 
 	/* Pop the return PC value into A0.  */
 	movel	%sp@+, %a0
@@ -50,7 +50,13 @@ ENTRY (__vfork)
 	movel	#SYS_ify (vfork), %d0
 	trap	#0
 
-	RESTORE_PID
+	/* Restore the original value of the TCB cache of the PID, if we're
+	   the parent.  But in the child (syscall return value equals zero),
+	   leave things as they are.  */
+	tstl	%d0
+	jeq	1f
+	movel	%d1, PID_OFFSET(%a1)
+1:
 
 	tstl	%d0
 	jmi	.Lerror		/* Branch forward if it failed.  */
@@ -72,3 +78,4 @@ PSEUDO_END (__vfork)
 libc_hidden_def (__vfork)
 
 weak_alias (__vfork, vfork)
+strong_alias (__vfork, __libc_vfork)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                         |   13 +++++++
 sysdeps/unix/sysv/linux/m68k/clone.S              |    4 --
 sysdeps/unix/sysv/linux/m68k/nptl/clone.S         |    2 -
 sysdeps/unix/sysv/linux/m68k/nptl/pt-vfork.S      |   35 -------------------
 sysdeps/unix/sysv/linux/m68k/nptl/vfork.S         |   37 ---------------------
 sysdeps/unix/sysv/linux/{tile => m68k}/pt-vfork.c |    0
 sysdeps/unix/sysv/linux/m68k/vfork.S              |   33 +++++++++++-------
 7 files changed, 33 insertions(+), 91 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/m68k/nptl/clone.S
 delete mode 100644 sysdeps/unix/sysv/linux/m68k/nptl/pt-vfork.S
 delete mode 100644 sysdeps/unix/sysv/linux/m68k/nptl/vfork.S
 copy sysdeps/unix/sysv/linux/{tile => m68k}/pt-vfork.c (100%)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]