From owner-svn-src-projects@FreeBSD.ORG  Mon Feb 15 03:37:53 2010
Return-Path: <owner-svn-src-projects@FreeBSD.ORG>
Delivered-To: svn-src-projects@freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 69FBE106566B;
	Mon, 15 Feb 2010 03:37:53 +0000 (UTC)
	(envelope-from nwhitehorn@FreeBSD.org)
Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c])
	by mx1.freebsd.org (Postfix) with ESMTP id 584F38FC0C;
	Mon, 15 Feb 2010 03:37:53 +0000 (UTC)
Received: from svn.freebsd.org (localhost [127.0.0.1])
	by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o1F3broW080177;
	Mon, 15 Feb 2010 03:37:53 GMT
	(envelope-from nwhitehorn@svn.freebsd.org)
Received: (from nwhitehorn@localhost)
	by svn.freebsd.org (8.14.3/8.14.3/Submit) id o1F3bqm4080171;
	Mon, 15 Feb 2010 03:37:52 GMT
	(envelope-from nwhitehorn@svn.freebsd.org)
Message-Id: <201002150337.o1F3bqm4080171@svn.freebsd.org>
From: Nathan Whitehorn <nwhitehorn@FreeBSD.org>
Date: Mon, 15 Feb 2010 03:37:52 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-projects@freebsd.org
X-SVN-Group: projects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Cc: 
Subject: svn commit: r203910 - projects/ppc64/lib/libc/powerpc64/sys
X-BeenThere: svn-src-projects@freebsd.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "SVN commit messages for the src &quot; projects&quot;
	tree" <svn-src-projects.freebsd.org>
List-Unsubscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-projects>
List-Post: <mailto:svn-src-projects@freebsd.org>
List-Help: <mailto:svn-src-projects-request@freebsd.org?subject=help>
List-Subscribe: <http://lists.freebsd.org/mailman/listinfo/svn-src-projects>, 
	<mailto:svn-src-projects-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 15 Feb 2010 03:37:53 -0000

Author: nwhitehorn
Date: Mon Feb 15 03:37:52 2010
New Revision: 203910
URL: http://svn.freebsd.org/changeset/base/203910

Log:
  Fix invocation of __cerror following earlier API changes and place the
  old value of LR in the parent's stack frame in ptrace(2) instead of
  accidentally putting it in the function's own. This gets GDB at least
  not to crash on a running program, but it still does not work correctly.

Modified:
  projects/ppc64/lib/libc/powerpc64/sys/brk.S
  projects/ppc64/lib/libc/powerpc64/sys/exect.S
  projects/ppc64/lib/libc/powerpc64/sys/pipe.S
  projects/ppc64/lib/libc/powerpc64/sys/ptrace.S
  projects/ppc64/lib/libc/powerpc64/sys/sbrk.S

Modified: projects/ppc64/lib/libc/powerpc64/sys/brk.S
==============================================================================
--- projects/ppc64/lib/libc/powerpc64/sys/brk.S	Mon Feb 15 03:09:55 2010	(r203909)
+++ projects/ppc64/lib/libc/powerpc64/sys/brk.S	Mon Feb 15 03:37:52 2010	(r203910)
@@ -59,5 +59,12 @@ ENTRY(brk)
 	blr				/* return 0 */
 
 1:
-	b	PIC_PLT(HIDENAME(cerror))
+	mflr	%r0
+	std	%r0,16(%r1)
+	stdu	%r1,-48(%r1)
+	bl	PIC_PLT(HIDENAME(cerror))
 	nop
+	ld	%r1,0(%r1)
+	ld	%r0,16(%r1)
+	mtlr	%r0
+	blr

Modified: projects/ppc64/lib/libc/powerpc64/sys/exect.S
==============================================================================
--- projects/ppc64/lib/libc/powerpc64/sys/exect.S	Mon Feb 15 03:09:55 2010	(r203909)
+++ projects/ppc64/lib/libc/powerpc64/sys/exect.S	Mon Feb 15 03:37:52 2010	(r203910)
@@ -36,5 +36,12 @@ ENTRY(exect)
 	bso	1f
 	blr
 1:
-	b	PIC_PLT(HIDENAME(cerror))
+	mflr	%r0
+	std	%r0,16(%r1)
+	stdu	%r1,-48(%r1)
+	bl	PIC_PLT(HIDENAME(cerror))
 	nop
+	ld	%r1,0(%r1)
+	ld	%r0,16(%r1)
+	mtlr	%r0
+	blr

Modified: projects/ppc64/lib/libc/powerpc64/sys/pipe.S
==============================================================================
--- projects/ppc64/lib/libc/powerpc64/sys/pipe.S	Mon Feb 15 03:09:55 2010	(r203909)
+++ projects/ppc64/lib/libc/powerpc64/sys/pipe.S	Mon Feb 15 03:37:52 2010	(r203910)
@@ -40,5 +40,12 @@ ENTRY(pipe)
 	li	%r3,0
 	blr			/* and return 0 */
 1:
-	b	PIC_PLT(HIDENAME(cerror))
+	mflr	%r0
+	std	%r0,16(%r1)
+	stdu	%r1,-48(%r1)
+	bl	PIC_PLT(HIDENAME(cerror))
 	nop
+	ld	%r1,0(%r1)
+	ld	%r0,16(%r1)
+	mtlr	%r0
+	blr

Modified: projects/ppc64/lib/libc/powerpc64/sys/ptrace.S
==============================================================================
--- projects/ppc64/lib/libc/powerpc64/sys/ptrace.S	Mon Feb 15 03:09:55 2010	(r203909)
+++ projects/ppc64/lib/libc/powerpc64/sys/ptrace.S	Mon Feb 15 03:37:52 2010	(r203910)
@@ -33,7 +33,7 @@ __FBSDID("$FreeBSD$");
 ENTRY(ptrace)
 	mflr	%r0
 	stdu	%r1,-68(%r1)
-	std	%r0,16(%r1)
+	std	%r0,84(%r1)
 	stw	%r3,48(%r1)
 	stw	%r4,52(%r1)
 	std	%r5,56(%r1)
@@ -47,7 +47,7 @@ ENTRY(ptrace)
 	lwz	%r3,48(%r1)
 	lwz	%r4,52(%r1)
 	ld	%r5,56(%r1)
-	ld	%r0,16(%r1)
+	ld	%r0,84(%r1)
 	lwz	%r6,64(%r1)
 	mtlr	%r0
 	ld	%r1,0(%r1)
@@ -56,5 +56,10 @@ ENTRY(ptrace)
 	bso	1f
 	blr
 1:
-	b	PIC_PLT(HIDENAME(cerror))
+	stdu	%r1,-48(%r1)		/* lr already saved */
+	bl	PIC_PLT(HIDENAME(cerror))
 	nop
+	ld	%r1,0(%r1)
+	ld	%r0,16(%r1)
+	mtlr	%r0
+	blr

Modified: projects/ppc64/lib/libc/powerpc64/sys/sbrk.S
==============================================================================
--- projects/ppc64/lib/libc/powerpc64/sys/sbrk.S	Mon Feb 15 03:09:55 2010	(r203909)
+++ projects/ppc64/lib/libc/powerpc64/sys/sbrk.S	Mon Feb 15 03:37:52 2010	(r203910)
@@ -54,5 +54,12 @@ ENTRY(sbrk)
 	mr      %r3,%r6				/* set return value */
 	blr
 2:
-	b	PIC_PLT(HIDENAME(cerror))
+	mflr	%r0
+	std	%r0,16(%r1)
+	stdu	%r1,-48(%r1)
+	bl	PIC_PLT(HIDENAME(cerror))
 	nop
+	ld	%r1,0(%r1)
+	ld	%r0,16(%r1)
+	mtlr	%r0
+	blr