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