[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[commits] r10811 - in /fsf/trunk/ports: ./ sysdeps/unix/sysv/linux/hppa/nptl/ sysdeps/unix/sysv/linux/m68k/bits/



Author: eglibc
Date: Fri Jun 25 00:03:55 2010
New Revision: 10811

Log:
Import glibc-ports-mainline for 2010-06-25

Modified:
    fsf/trunk/ports/ChangeLog.hppa
    fsf/trunk/ports/ChangeLog.m68k
    fsf/trunk/ports/sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S
    fsf/trunk/ports/sysdeps/unix/sysv/linux/m68k/bits/fcntl.h

Modified: fsf/trunk/ports/ChangeLog.hppa
==============================================================================
--- fsf/trunk/ports/ChangeLog.hppa (original)
+++ fsf/trunk/ports/ChangeLog.hppa Fri Jun 25 00:03:55 2010
@@ -1,3 +1,9 @@
+2010-06-24  Carlos O'Donell  <carlos@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S: Only create stack 
+	frame around call to SYSCALL_ERROR_HANDLER. Do not restore %rp 
+	from the stack frame on successfull return.
+
 2010-06-23  Carlos O'Donell  <carlos@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/hppa/getcontext.S (__getcontext_ret):

Modified: fsf/trunk/ports/ChangeLog.m68k
==============================================================================
--- fsf/trunk/ports/ChangeLog.m68k (original)
+++ fsf/trunk/ports/ChangeLog.m68k Fri Jun 25 00:03:55 2010
@@ -1,3 +1,8 @@
+2010-06-24  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/m68k/bits/fcntl.h (F_SETPIPE_SZ,
+	F_GETPIPE_SZ): Define.
+
 2010-06-13  Andreas Schwab  <schwab@xxxxxxxxxxxxxx>
 
 	* sysdeps/m68k/m680x0/fpu/bits/mathinline.h: Mark all functions as

Modified: fsf/trunk/ports/sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S
==============================================================================
--- fsf/trunk/ports/sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S (original)
+++ fsf/trunk/ports/sysdeps/unix/sysv/linux/hppa/nptl/pt-vfork.S Fri Jun 25 00:03:55 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2005, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -50,10 +50,9 @@
 
 	/* r26, r25, r24, r23 are free since vfork has no arguments */
 ENTRY(__vfork)
-	/* Prologue */
-	stwm	%r3, 64(%sp)
-	stw	%sp, -4(%sp)
-	stw	%r19, -32(%sp)
+	/* We must not create a frame. When the child unwinds to call 
+	   exec it will clobber the same frame that the parent
+	   needs to unwind.  */
 
 	/* Save the PIC register. */
 #ifdef PIC
@@ -75,12 +74,20 @@
 	comclr,>>= %r1,%ret0,%r0        /* Note: unsigned compare. */
 	b,n	.Lerror
 
-	/* Return, no need to restore the PIC register. */
-	ldw	-84(%sp), %rp
-	bv	%r0(%rp)
-	ldwm	-64(%sp), %r3
+	/* Return, and DO NOT restore rp. The child may have called
+	   functions that updated the frame's rp. This works because
+	   the kernel ensures rp is preserved across the vfork 
+	   syscall.  */
+	bv,n	%r0(%rp)
 
 .Lerror:
+	/* Now we need a stack to call a function. We are assured
+	   that there is no child now, so it's safe to create
+	   a frame.  */
+	stw	%rp, -20(%sp)
+	stwm	%r3, 64(%sp)
+	stw	%sp, -4(%sp)
+
 	sub	%r0,%ret0,%r3
 	SYSCALL_ERROR_HANDLER
 	/* Restore the PIC register (in delay slot) on error */

Modified: fsf/trunk/ports/sysdeps/unix/sysv/linux/m68k/bits/fcntl.h
==============================================================================
--- fsf/trunk/ports/sysdeps/unix/sysv/linux/m68k/bits/fcntl.h (original)
+++ fsf/trunk/ports/sysdeps/unix/sysv/linux/m68k/bits/fcntl.h Fri Jun 25 00:03:55 2010
@@ -101,6 +101,8 @@
 # define F_SETLEASE	1024	/* Set a lease.	 */
 # define F_GETLEASE	1025	/* Enquire what lease is active.  */
 # define F_NOTIFY	1026	/* Request notfications on a directory.	 */
+# define F_SETPIPE_SZ	1031	/* Set pipe page size array.  */
+# define F_GETPIPE_SZ	1032	/* Set pipe page size array.  */
 #endif
 #ifdef __USE_XOPEN2K8
 # define F_DUPFD_CLOEXEC 1030	/* Duplicate file descriptor with