Comment 14 for bug 916724

Revision history for this message
SteffenAbe (s-abe) wrote :

I've played a bit with nm -C (although on Debian Testing, not on Ubuntu) and I've identified some of the undefined symbols:

in libModel.so:

_ZTIN4esys3lsm14CheckPointableE : typeinfo for esys::lsm::CheckPointable
_ZN4esys3lsm14CheckPointableD2Ev : esys::lsm::CheckPointable::~CheckPointable()
_ZN4esys3lsm14CheckPointableC2Ev : esys::lsm::CheckPointable::CheckPointable()
_ZN4esys3lsm14CheckPointable16saveSnapShotDataERSo : esys::lsm::CheckPointable::saveSnapShotData(std::ostream&)

All those functions are implemented in Parallel/CheckPointable.cpp.

_ZN4esys3lsm10NodeReaderC1ERSi : esys::lsm::NodeReader::NodeReader(std::istream&)
_ZN4esys3lsm12Node2DReaderC1ERSi : esys::lsm::Node2DReader::Node2DReader(std::istream&)
_ZN4esys3lsm12Edge2DReaderC1ERSi : esys::lsm::Edge2DReader::Edge2DReader(std::istream&)
_ZN4esys3lsm9TriReaderC1ERSi : esys::lsm::TriReader::TriReader(std::istream&)

These functions are from Parallel/MeshReader.cpp and Parallel/Mesh2DReader.cpp
Accordingly the symbols are defined in libParallel.so

_ZN15AWallFieldSlave7addWallEP5CWall : AWallFieldSlave::addWall(CWall*)
_ZN15AWallFieldSlaveC2EP8TML_Comm : AWallFieldSlave::AWallFieldSlave(TML_Comm*)

These functions are from Fields/WallFieldSlave.cpp and the symbols are defined in libFields.so.
What all those functions have in common is that they have either empty function bodies (the MeshReader, Mesh2Reader stuff) or they are from abstract classes (CheckPointable, AWallFieldSlave).

But indeed it looks like the whole library structure, after having grown unchecked for several years, is in need for some serious disentanglement.

Steffen