We have a mixed language (C/Fortran) shared library (.so) called true_io.so that handles I/O for our various production apps.
Recently we released a new version of this shared library built with the latest 7.0-6 compiler. Our previous release of this shared library was built with 5.2 compiler.
This new shared library (7.0-6) gives the following runtime error when run with an production executable built with 5.2
missing symbol error : a325.exe : undefined symbol : [b]pghpf_sect1v[/b]
a325.exe works perfectly well with the old shared library built with the 5.2 compiler
We also noticed that most of the PGI fortran internal symbols sect* which come from libpgf90.a had been renamed from **pgf90** to pghpf_
true_io.so built PGI 5.2
nm true_io.so | grep -i sect 000000000002dd10 T pghpf_sect 000000000002e060 T pghpf_sect1 000000000002e330 T pghpf_sect1v 000000000002e5f0 T pghpf_sect2 000000000002ea60 T pghpf_sect2v 000000000002eeb0 T pghpf_sect3 000000000002f4a0 T pghpf_sect3v
true_io.so built PGI 7.0-6
nm true_io.so | grep -i sect 0000000000033990 T pgf90_sect 0000000000033e70 T pgf90_sect1 0000000000034240 T pgf90_sect1v 00000000000345e0 T pgf90_sect2 0000000000034bf0 T pgf90_sect2v 00000000000351b0 T pgf90_sect3 0000000000035b70 T pgf90_sect3v .. .. 0000000000033630 T pghpf_sect 0000000000036430 T pghpf_sect3 0000000000036ab0 T pghpf_sect3v
Newer version of a325.exe built with (7.0-6) do not exhibit this problem as they have the correct pgf90_sect1v symbol as compared to the old executable with the pghpf_sect1v symbol
This is huge issue for us as we have tons of applications that link against the shared true_io.so library. Most of the production apps have already been compiled with 5.2 and will probably not be rebuilt.
Any suggestions or ideas on how to fix this would be greatly appreciated.