This is the mail archive of the mailing list for the binutils 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]

Broken objcopy under AIX 5.1 in 64 bit


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

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

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