I am confused with gcc configuration, and I cannot determine if I have a bug
or if I am misconfiguring the compiler. Here is the situation:

gcc sources: 4.2 snapshot of 20060905

If compiler is configured with:
--target=powerpc-*-linux-gnualtivec

then I have the following libraries and everything works fine:
<prefix>/powerpc-unknown-linux-gnualtivec/lib/libgcc_s.so
   Defined __gcc_qadd (from darwin-ldouble.c) but no undefined references
   No references to __lttf2
<prefix>/lib/gcc/powerpc-unknown-linux-gnualtivec/4.2.0/libgcc.a
   Defined __gcc_qadd (from darwin-ldouble.c) AND undefined references
   No references to __lttf2

If compiler is configured with:
--target=powerpc-*-linux-gnuspe --enable-e500_double --disable-shared

then I have the following libraries and everything still (!!) works fine:
No libgcc_s.so
<prefix>/lib/gcc/powerpc-unknown-linux-gnuspe/4.2.0/libgcc.a
Only undefined references to __gcc_qadd (because this target defines __NO_FPRS__)
   Only undefined references to __lttf2 (why ?)

If compiler is configured with:
--target=powerpc-*-linux-gnuspe --enable-e500_double

then I have the following libraries, and most c++ and fortran code fails
to link with undefined symbols (among then, __gcc_qadd and __lttf2)
<prefix>/lib/libgcc_s.so
   Only undefined references to __gcc_qadd
   Only undefined references to __lttf2

So the key questions are:
1 - What should I expect in regards to __lttf2 (and similar symbols).
(like, when they should be defined, referenced, and when not)
2 - Why darwin-ldouble.c only generates code for __gcc_qadd if fp registers are present ? NOTE: The 8548 does have hardware instructions for implementing f.p. (s.p. and d.p.) but it uses the gp registers. So the definition of __NO_FPRS__ is correct for this target. 3 - Is the use of configuration option --disable-shared required for this target (because hardware differences like the lack of fp registers) or am I just avoiding a problem that should be fixed ?

Any comments are welcome.
Thanks
Edmar

Reply via email to