Date: Mon, 15 Feb 2010 03:37:52 +0000 (UTC) From: Nathan Whitehorn <nwhitehorn@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r203910 - projects/ppc64/lib/libc/powerpc64/sys Message-ID: <201002150337.o1F3bqm4080171@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201002150337.o1F3bqm4080171>