This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Broken objcopy under AIX 5.1 in 64 bit
- From: "Henrik Goldman" <henrik_goldman at mail dot tele dot dk>
- To: <binutils at sourceware dot org>
- Date: Wed, 14 Jun 2006 09:15:57 +0200
- Subject: Broken objcopy under AIX 5.1 in 64 bit
Hi,
I'm having a situation where gnu objcopy fails badly when using it with 64
bit compiles under AIX 5.1:
What I'm doing is to hide some symbols on g++ compiled code:
g++ -maix64 -c -pthread -o temp/AIX/test.o test.cpp
mv temp/AIX/test.o temp/AIX/to_be_fixed.o
ld -b64 -r temp/AIX/to_be_fixed.o
`g++ -maix64 --print-file-name=libstdc++.a` -o temp/AIX/test.o
rm temp/AIX/to_be_fixed.o
mv temp/AIX/test.o temp/AIX/to_be_fixed.o;
objcopy -G main temp/AIX/to_be_fixed.o temp/AIX/test.o;
rm temp/AIX/to_be_fixed.o
When I link with test.o using native AIX linker (with gcc as frontend) I
get:
gcc -maix64 -lpthread -o test test.o
ld: 0711-590 SEVERE ERROR: Object test.o cannot be processed.
The length field at the beginning of the string table is invalid.
collect2: ld returned 12 exit status
make: *** [all] Error 1
I have tried to temporarily make some modications and exclude objcopy from
the build and suddenly everything starts to work perfectly. objcopy
therefore must generate bad code in 64 bit mode since it also works
correctly as 32 bit code.
I have downloaded binutils 2.16.1 and have configured it with
"./configure --enable-64-bit-bfd"
Are there anything else I could try? What I'm trying is to make global
symbols in the object file into
local symbols?
Thanks in advance.
-- Henrik