Re: Program compiled using FC6 g++ crash in FC5

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

 



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.


[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux