AIX architecture problems continued

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Background: AIX 5.2 box.  My mission is to port my company's application
from AIX's native xlC compiler to the GNU toolchain.  I bootstraped gcc
3.4.0 from a gcc 3.3.3 (build for AIX5.1) I downloaded.  I built gcc with
an architecture of "powerpc-ibm-aix5.2.0.0" using the -mcpu=rs64a flag.  
This is on a PowerPC_RS64-II according to lsattr.

I have a binutils2.14 built by someone else into /opt/local/bin.  I can tell you this about it:
/opt/local/bin/ld: supported targets: aixcoff-rs6000 aix5coff64-rs6000 
srec symbolsrec tekhex binary ihex
/opt/local/bin/ld: supported emulations: aix5ppc
/opt/local/bin/ld: emulation specific options:
  no emulation specific options.
/opt/local/bin/ld -v
GNU ld version 2.14 20030612

I have a binutils 2.15 that I just built myself using the gcc 3.4.0 compiler I
built as outlined above, into /opt/binutils2.15/bin.

I also have ld, etc, from the native xlC toolchain in /usr/bin.

I wrote a little test program that just does some << and >> and stringstream
conversions.  Source available if you think it's important.

When I try using the new compiler with the stock ld:
--------------------------------
~/build/test> export PATH=$GCC340PATH:$ORIGPATH
~/build/test> which gcc
/opt/gcc3.4.0/bin/gcc
~/build/test> which ld
/usr/bin/ld
~/build/test> g++ -o piddle piddle.cpp && ./piddle
Before defining stringstream here
After defining stringstream
the process id is 94776.
the number is: 56
--------------------------------
the program works fine, no errors.

When I try using the new compiler with the old gnu binutils:
--------------------------------
~/build/test> export PATH=$GCC340PATH:/usr/local/bin:$ORIGPATH
~/build/test> g++ -o piddle piddle.cpp && ./piddle
Before defining stringstream here
After defining stringstream
the process id is 28258.
the number is: 56
--------------------------------
the program works fine, no errors.

When I try using the new compiler with the new gnu binutils:
--------------------------------
~/build/test> export PATH=$GCC340PATH:$BINUTILSPATH:$ORIGPATH
~/build/test> which gcc
/opt/gcc3.4.0/bin/gcc
~/build/test> which ld
/opt/binutils2.15/bin/ld
~/build/test> g++ -o piddle piddle.cpp && ./piddle
Before defining stringstream here
Segmentation fault (core dumped)
--------------------------------
The program dies on this line:
stringstream sstr("safas");

I've tried with with various constructors, too, with the same results.  Since
I'm using the same exact source code and the same compiler, and only the
linking process has changed in my test, it seems to me that the problem has to
be the linker, no?

BTW, the reason I am trying to build a new binutils, is because when I link my
application, and some more complex test code, I get errors like:

/opt/local/bin/ld: warning: powerpc:601 architecture of input file
`/opt/gcc3.4.0/lib/gcc/powerpc-ibm-aix5.2.0.0/3.4.0/libgcc.a(_divdi3.o)' is
incompatible with rs6000:6000 output
/opt/local/bin/ld: warning: powerpc:601 architecture of input file
`/opt/gcc3.4.0/lib/gcc/powerpc-ibm-aix5.2.0.0/3.4.0/libgcc.a(_moddi3.o)' is
incompatible with rs6000:6000 output
/opt/local/bin/ld: warning: powerpc:601 architecture of input file
`/opt/gcc3.4.0/lib/gcc/powerpc-ibm-aix5.2.0.0/3.4.0/libgcc.a(_udivdi3.o)' is
incompatible with rs6000:6000 output
/opt/local/bin/ld: warning: powerpc:601 architecture of input file
`/opt/gcc3.4.0/lib/gcc/powerpc-ibm-aix5.2.0.0/3.4.0/libgcc.a(_umoddi3.o)' is
incompatible with rs6000:6000 output
/opt/local/bin/ld: warning: powerpc:601 architecture of input file
`/opt/gcc3.4.0/lib/gcc/powerpc-ibm-aix5.2.0.0/3.4.0/libgcc.a(_udivmoddi4.o)'
is incompatible with rs6000:6000 output
/opt/local/bin/ld: warning: powerpc:601 architecture of input file
`/opt/gcc3.4.0/lib/gcc/powerpc-ibm-aix5.2.0.0/3.4.0/libgcc_eh.a(unwind-dw2.o)'
is incompatible with rs6000:6000 output
/opt/local/bin/ld: warning: powerpc:601 architecture of input file
`/opt/gcc3.4.0/lib/gcc/powerpc-ibm-aix5.2.0.0/3.4.0/libgcc_eh.a(unwind-dw2-fde.o)'
is incompatible with rs6000:6000 output

However, I'm not so sure it's the linker.  What do you think?
-- 
DDDD   
DK KD  I am a nobody
DKK D  Nobody is perfect
DK KD  Therefore, I am perfect.
DDDD   

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux