This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
[G++ 4.4.2] ABI changing?
- From: 甜瓜 <littlesweetmelon at gmail dot com>
- To: gcc at gcc dot gnu dot org
- Date: Fri, 26 Mar 2010 11:50:13 +0800
- Subject: [G++ 4.4.2] ABI changing?
Howdy,
I find a problem when upgraded g++ from 4.4.1 to 4.4.2. Original g++
generates code with "System V ABI", but new g++ generates code with
"Linux ABI". I don't know what difference between them, but the output
.so file from g++ 4.4.2 cannot be used in g++ 4.4.1.
To describe my problem clear, I have two x86-64 PCs with RedHat Linux.
g++ 4.4.1 is installed in PC1, while 4.4.2 is installed in PC2.
If I copy the executable file compiled by PC1 to PC2, and run "ldd
a.out", it prints the related modules.
But if I copy the executable file compiled by PC2 to PC1, and run "ldd
a.out", it prints error message for "not a dynamic executable".
Therefore, it seem the gcc tool-chain have backward compatibility for
"System V" and "Linux" ABI.
Could you tell me why g++ changes ABI? and why cannot I find any thing
about it from the changelog of gcc 4.4.2?
Is there a way to specify ABI in gcc command line on x86/64 platform?
Thank you in advance.
--
ShenLei