This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]