On 11/17/06, Jakub Jelinek <jakub@xxxxxxxxxx> wrote:
On Thu, Nov 16, 2006 at 10:46:40PM -0800, David Scriven wrote: > I have two programs that when compiled under the latest version of g++: > gcc version 4.1.1 20061011 (Red Hat 4.1.1-30) work perfectly > under FC6 but give the error 'Floating point exception' when run under FC5. > (The version of g++ in FC5 is 4.1.1 20060525 (Red Hat 4.1.1.-1) Any program compiled/linked on FC6 will by default not work on FC5 or earlier. Besides the usual "glibc and other libraries are only backwards compatible, not forward compatible" which very often renders building on later distro version and running on earlier one impossible, in FC6 there is additional difference that FC6 emits by default only .gnu.hash section (and FC6 dynamic linker understands both .gnu.hash and .hash), while FC5 and earlier dynamic linker only groks .hash section. So, if you are lucky and you won't happen to use any glibc/libstdc++/libgcc etc. FC6+ only symbol versions in your program, you still need to link with -Wl,--hash-style=both or -Wl,--hash-style=sysv if you want to have a chance of working on earlier release. Jakub
Silly me. I should have just referred the OP to the FC6 RELEASE NOTES: 12.2.2. GCC Compiler Collection This release of Fedora has been built with GCC 4.1, which is included with the distribution. 12.2.2.1. Caveats Fedora developers have introduced changes in the ELF .hash section that provides symbols for dynamic linking. This new .gnu.hash section, which is produced with the new default --hash-style=gnu option for gcc, serves the same purpose as previous hash sections. It provides, however, an approximately 50% increase in dynamic linking speed. Binaries and libraries produced with the new hashing function are incompatible with older glibc and dynamic linker releases. To use the old-style hashing routines for compatibility with older glibc-based systems, pass the --hash-style=sysv option instead.