This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.19-588-g1d2a049
- From: schwab at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 14 Jun 2014 19:39:29 -0000
- Subject: 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