This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC 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: How to configure a bi-arch PowerPC GCC?


Hello again,

On Mon, Jan 23, 2017 at 09:19:04AM +0100, Sebastian Huber wrote:
> >>I am flexible in terms of the ABI choice for the 64-bit PowerPC. I guess
> >>the ABI_ELFv2 is the way to go?
> >It certainly is the most modern ABI.  It makes some requirements to what
> >Power ISA features are required, which may or may not be a problem for
> >your platform.  If you want to use BE, that should work with ELFv2 fine
> >(and it did in the past at least), but it doesn't get serious testing.
> 
> I use now the attached patch and get the following error types (for 
> several multilibs):


> /home/EB/sebastian_h/archive/gcc-git/libgcc/config/rs6000/ibm-ldouble.c:374:0:
> /home/EB/sebastian_h/archive/gcc-git/libgcc/soft-fp/quad.h:72:1: error: 
> unable to emulate 'TF'
>  typedef float TFtype __attribute__ ((mode (TF)));
>  ^~~~~~~

>From rs6000.c (rs6000_scalar_mode_supported_p):
  else if (TARGET_FLOAT128_TYPE && (mode == KFmode || mode == IFmode))
    return true;
  else
    return default_scalar_mode_supported_p (mode);
and the latter has
      if (precision == LONG_DOUBLE_TYPE_SIZE)
        return true;
      return false;

so you have no 128-bit FP type at all.  Maybe your TARGET_IEEEQUAD definition
is wrong, maybe something else...  What type *do* you want for float128?


> /home/EB/sebastian_h/archive/gcc-git/libgcc/unwind-dw2-fde.c: In 
> function 'search_object':
> /home/EB/sebastian_h/archive/gcc-git/libgcc/unwind-dw2-fde.c:588:25: 
> internal compiler error: in emit_move_insn, at expr.c:3698
>         v1->array[i1+i2] = v1->array[i1-1];
>         ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
> 0x6c49bb emit_move_insn(rtx_def*, rtx_def*)
>         /home/EB/sebastian_h/archive/gcc-git/gcc/expr.c:3697
> 0x6a5c2b force_reg
>         /home/EB/sebastian_h/archive/gcc-git/gcc/explow.c:648
> 0xd61994 rs6000_legitimize_address
> /home/EB/sebastian_h/archive/gcc-git/gcc/config/rs6000/rs6000.c:8873

rs6000_legitimize_address called force_reg which ICEs in emit_move_insn
because the source is not the same mode as the dest (or an immediate, etc.)

You'll have to debug this a bit more to see what is going on.


> /home/EB/sebastian_h/archive/gcc-git/libgcc/emutls.c:171:13: note: 
> include '<stdlib.h>' or provide a declaration of 'realloc'
> /tmp/ccoZ1J0W.s: Assembler messages:
> /tmp/ccoZ1J0W.s:125: Error: can't resolve `.got' {.got section} - 
> `.LCTOC1' {*UND* section}

Your TLS is misconfigured.  Or something.


> --- a/gcc/config.gcc
> +++ b/gcc/config.gcc
> @@ -2381,7 +2381,7 @@ powerpc-*-eabi*)
>  	use_gcc_stdint=wrap
>  	;;
>  powerpc-*-rtems*)
> -	tm_file="${tm_file} dbxelf.h elfos.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/rtems.h rtems.h"
> +	tm_file="rs6000/biarch64.h ${tm_file} dbxelf.h elfos.h freebsd-spec.h newlib-stdint.h rs6000/sysv4.h rs6000/eabi.h rs6000/e500.h rs6000/rtems.h rtems.h"
>  	extra_options="${extra_options} rs6000/sysv4.opt"
>  	tmake_file="${tmake_file} rs6000/t-fprules rs6000/t-rtems rs6000/t-ppccomm"
>  	;;

You might want to break this line into parts.  It isn't so easy to see what
you changed now :-)

Have you checked if your generated files (say, those in libgcc) are
actually ELFv2 now, and if they look correct?


Segher


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