[Patch,fortran] PR 27740 Symbol versioning for libgfortran

Janne Blomqvist Janne.Blomqvist@tkk.fi
Mon Nov 6 19:31:00 GMT 2006


Paolo Bonzini wrote:
> 
>> FreeBSD should be picking up csqrtf et al from c99_intrinsics.c.  It
>> seems that the patch is corrupting the HAVE_CSQRTF macro.  I'll 
>> applied Janne's patch tommorrow and configure with maintainer-mode.
> 
> It may just be that csqrtf is not exported anymore.

I don't see how the symbol versioning patch has changed csqrtf. 
Pre-patch there is:

nm -a libgfortran.so.2.0.0|grep csqrt

          U csqrtf@@GLIBC_2.1
          U csqrt@@GLIBC_2.1
          U csqrtl@@GLIBC_2.1

And post-versioning-patch:

nm -a libgfortran.so.3.0.0|grep csqrt
          U csqrtf@@GLIBC_2.1
          U csqrt@@GLIBC_2.1
          U csqrtl@@GLIBC_2.1

So the nm man page says that "U" means undefined, I understand it means 
libgfortran references said symbol and expects some other .so to 
actually define it.

Then again, I'm far from an expert on ABI issues.

> It seems like a bad idea to modify the F2C ABI (was it 
> backwards-compatible with libf2c? if so, it definitely *is* a bad idea).

AFAIK we need don't need API compatibility with libf2c (for one, the 
symbol names are different, _specific_foo vs. foo or with the patch 
_gfortran_specific_foo). I don't really know the f2c stuff, but I think 
it's something to do with being compatible with the f2c calling convention.

> I think this patch should be reviewed by somebody with symbol versioning 
> experience, maybe Jakub, especially because of the csqrtf issue.  (No, I 
> don't qualify).

Yes, that would be nice.


-- 
Janne Blomqvist



More information about the Fortran mailing list