On Wed, May 25, 2011 at 01:52:45PM +0000, Bernd Schmidt wrote:
> On 05/25/2011 01:45 PM, H.J. Lu wrote:
> > On Wed, May 25, 2011 at 6:42 AM, Bernd Schmidt <ber...@codesourcery.com> 
> > wrote:
> >> On 05/25/2011 01:37 PM, H.J. Lu wrote:
> >>
> >>> I think it may have caused:
> >>>
> >>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49160
> >>
> >> Looks like it. Not quite sure how to fix it yet. Do you know what files
> >> such as i386/64/_divtc3.c are trying to achieve?
> >>
> > 
> > It provides backward compatibility with symbol versioning:
> > 
> > [hjl@gnu-4 64]$ readelf -s /lib64/libgcc_s.so.1| grep __powitf2
> >     52: 0000003e8a80d170   167 FUNC    GLOBAL DEFAULT   12 
> > __powitf2@@GCC_4.3.0
> >     54: 0000003e8a80d170   167 FUNC    GLOBAL DEFAULT   12 
> > __powitf2@GCC_4.0.0
> > [hjl@gnu-4 64]$
> 
> That leaves me as clueless as before. Why does i386/64 need this but not
> other targets (such as i386/32), and why only those three functions
> (from the ones in libgcc)?

The comment in config/i386/libgcc-glibc.ver explains it:

# Those symbols had improper versions when they were added to gcc 4.3.0.
# We corrected the default version to GCC_4.3.0.  But we keep the old
# version for backward binary compatibility.

It is not just 3 symbols, but 6 -
__netf2/__gttf2/__lttf2/__divtc3/__multc3/__powitf2.

        Jakub

Reply via email to