In the library .../lib64/libgfortran.a, the 4.1.2 version has a routine _gfortran_copy_string in the strong_intrinsics.o component. For the same 4.2.1 library there is no corresponding entry point. It appears that codes compiled with 4.1.2 generate internal calls to this entry point. Attempting to link a library built with 4.1.2 and a code compiled and linked with the 4.2.1 compiler results in an "undefined reference" message from the loader for _gfortran_copy_string. Is it by design that codes compiled with 4.1.2 cannot be linked with 4.2.1? Is it a viable workaround to manually extract the string_intrinsic.o component from the old libgfortran.a file and insert it into the new libgfortran.a library, replacing the current version?
And this is by design. gfortran 4.1 is ABI incompatiable with gfortran 4.2. This is one of the reasons why in 4.2 (or is it only on the trunk), we added symbol versioning support. This is not the only place where 4.1 is different from 4.2.
Subject: Re: _gfortran_copy_string missing in libgfortran.a I suspected this might be the case, but did not find it documented. Thanks for the quick reply. Cheers, Bill pinskia at gcc dot gnu dot org wrote: > ------- Comment #1 from pinskia at gcc dot gnu dot org 2007-10-03 19:22 ------- > And this is by design. gfortran 4.1 is ABI incompatiable with gfortran 4.2. > This is one of the reasons why in 4.2 (or is it only on the trunk), we added > symbol versioning support. This is not the only place where 4.1 is different > from 4.2. > > >