This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
Re: Fixes for powerpc64 libc_p
- From: Steve Munroe <sjmunroe at us dot ibm dot com>
- To: Alan Modra <amodra at bigpond dot net dot au>
- Cc: libc-alpha at sources dot redhat dot com, dgm69 at us dot ibm dot com
- Date: Wed, 6 Oct 2004 08:56:43 -0500
- Subject: Re: Fixes for powerpc64 libc_p
Alan Modra <amodra@bigpond.net.au> wrote on 10/06/2004 08:35:50 AM:
> This patch fixes broken assembly routines in powerpc64-linux libc_p.a.
>
> The problem is that sysdeps/powerpc/powerpc64/sysdep.h defines a
> CALL_MCOUNT that is quite wrong for our _mcount. The ppc64 _mcount
> assumes function parameters have been saved before it is called (and are
> restored afterwards) by gcc function prologue code. The CALL_MCOUNT
> definition on the other hand is for a _mcount that does all register
> saving and restoring itself, like the ppc32 version. Net result is that
> a function like memcpy in libc_p.a will hang or segv.
>
> * gmon/Makefile (CFLAGS-mcount.c): Move before inclusion of "Rules".
> * sysdeps/powerpc/powerpc64/Makefile (CFLAGS-mcount.c): Add
> -msoft-float.
> * sysdeps/powerpc/powerpc64/sysdep.h (SAVE_ARG, REST_ARG): New
macros.
> (CALL_MCOUNT): Replace with a gas macro implementation.
> (EALIGN): Delete PROF version.
> * sysdeps/powerpc/powerpc64/__longjmp-common.S: Invoke CALL_MCOUNT.
> * sysdeps/powerpc/powerpc64/bsd-_setjmp.S: Likewise.
> * sysdeps/powerpc/powerpc64/bsd-setjmp.S: Likewise.
> * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise.
> * sysdeps/powerpc/powerpc64/memcpy.S: Likewise.
> * sysdeps/powerpc/powerpc64/memset.S: Likewise.
> * sysdeps/powerpc/powerpc64/stpcpy.S: Likewise.
> * sysdeps/powerpc/powerpc64/strchr.S: Likewise.
> * sysdeps/powerpc/powerpc64/strcmp.S: Likewise.
> * sysdeps/powerpc/powerpc64/strcpy.S: Likewise.
> * sysdeps/powerpc/powerpc64/strlen.S: Likewise.
> * sysdeps/powerpc/powerpc64/strncmp.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_ceil.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_ceilf.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_floor.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_floorf.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_llrintf.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_llround.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_rint.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_rintf.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_round.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_roundf.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_trunc.S: Likewise.
> * sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Likewise.
>
> * sysdeps/powerpc/powerpc64/setjmp-common.S: Add extra entry point
> past _mcount call.
> * sysdeps/powerpc/powerpc64/bsd-_setjmp.S: Use it.
> * sysdeps/powerpc/powerpc64/bsd-setjmp.S: Likewise.
>
> Regression tested powerpc64-linux. OK to apply?
looks good. I assume that [get|make|set|swap]context.S need the same
treatment?
Steven J. Munroe
Linux on Power Toolchain Architect
IBM Corporation, Linux Technology Center