Hi Andrew:

I have changed the subject line appropriately.

On 2009-07-20 15:55+0100 Andrew Ross wrote:

> Slightly off topic - I've now got gcc -fvisibility=hidden working with
> the qt driver and with the C++ qt_example.cpp. It does not work with
> the pyqt4 bindings yet. There are a couple of issues here (I think).
> 1) The sip generated code does not export the symbols that python
> requires. It should be possible to massage the source code if required.
> 2) The moc generated code for qt also is not visibility aware and I
> think this is what is leading to the missing symbols in plplot_pyqt4.so
> at the moment. I've not yet worked out how (or indeed even if it is
> possible) to massage the code by hand to "fix" this.

Thanks very much for dealing with the visibility issues caused by splitting
the old qt.cpp source code into qt.cpp and plqt.cpp.  I have now added one
additional cleanup there (revision 10167) to remove some unneeded logic in
pldll.h.in.

I agree with your comment (1) above that the visibility of the symbols
defined in plplot_pyqt4.so will be an issue when python attempts to
dynamically load that shared object.  But I believe the first priority is to
deal with the remaining unexported symbols in libplplotqtd.so that are
causing undefined symbols for plplot_pyqt4.so.

The current undefined symbol status is as follows.

softw...@raven> ldd -r drivers/qt.so 2>&1 |grep undefined
softw...@raven> ldd -r bindings/qt_gui/libplplotqtd.so 2>&1 |grep undefined
softw...@raven> ldd -r bindings/qt_gui/pyqt4/plplot_pyqt4.so 2>&1 |grep 
undefined
undefined symbol: _ZTI11QtExtWidget
(bindings/qt_gui/pyqt4/plplot_pyqt4.so)
undefined symbol: _ZTI10QtPLWidget
(bindings/qt_gui/pyqt4/plplot_pyqt4.so)
undefined symbol: _ZN11QtExtWidget16staticMetaObjectE
(bindings/qt_gui/pyqt4/plplot_pyqt4.so)
undefined symbol: _ZN10QtPLWidget16staticMetaObjectE
(bindings/qt_gui/pyqt4/plplot_pyqt4.so)
undefined symbol: _ZN10QtPLWidget11qt_metacastEPKc
(bindings/qt_gui/pyqt4/plplot_pyqt4.so)
undefined symbol:
_ZN11QtExtWidget11qt_metacallEN11QMetaObject4CallEiPPv(bindings/qt_gui/pyqt4/plplot_pyqt4.so)
undefined symbol: _ZN10QtPLWidget11qt_metacallEN11QMetaObject4CallEiPPv
(bindings/qt_gui/pyqt4/plplot_pyqt4.so)
undefined symbol: _ZN11QtExtWidget11qt_metacastEPKc
(bindings/qt_gui/pyqt4/plplot_pyqt4.so)

I have double-checked that all these eight symbols are defined in but not
exported from libplplotqtd.  You are probably aware of this already, but I
just discovered you can correlate these symbols with the demangled symbols
using the appropriate nm options and grep.  For example:

softw...@raven> nm --defined-only bindings/qt_gui/libplplotqtd.so |grep
_ZTI11QtExtWidget
0000000000214b50 d _ZTI11QtExtWidget
softw...@raven> nm --defined-only --demangle bindings/qt_gui/libplplotqtd.so
|grep 0000000000214b50
0000000000214b50 d typeinfo for QtExtWidget

That demangled symbol information for all eight symbols may help you to
figure out what is really going on with visibility.

I am curious about your comment (2) above.  Is there an example of a
externally required symbol in the generated moc_qt.cxx that cannot be
exported by some qt.h change involving the PLDLLIMPEXP_QT macro?

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state implementation
for stellar interiors (freeeos.sf.net); PLplot scientific plotting software
package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of
Linux Links project (loll.sf.net); and the Linux Brochure Project
(lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to