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