Hi Arjen:

On 2016-12-08 07:59-0000 Arjen Markus wrote:

> This visibility issue is one of obscurer aspects of today's
programming experience. It is akin to the import/export circus in
Windows DLLs. Always good for some puzzles.

Yes, and I have figured out this particular puzzle.  :-) The code generated by
automoc was not being compiled with -DUSINGDLL.  And that macro
is the essential trigger that allows us to specify visibility
support infrastructure in include/pldll.h.in and therefore visibility
of certain symbols throughout our code.

I have fixed that, but that involved a necessary style change (use
target properties rather than source code properties to set up
-DUSINGDLL) that I liked so much that I changed to that style
everywhere in our build system. Then I did a comprehensive test with
no constraints (i.e., of all interactive and noninteractive components
of PLplot) which revealed other issues.  I don't think those issues
are related to that style change, but nevertheless I want to get those
straightened out and completely tested before committing the style
change.  So hopefully I will be able to get this committed today, but
it might be tomorrow.

By the way, on the visibility issue, the Linux gcc developers are
firmly in Microsoft's corner on this (or at least the default no
exporting of symbols so developers have to specific about exactly
which symbols can be exported from a library).  The reason is extra
unused symbols that are exported for no reason make loading the
library more time consuming and increase the chances of nameclashes
between the same symbol name being used by two separate libraries.  So
this is a case where Microsoft got it right, and Linux has been
playing catch up with the gcc and g++ -fvisibility=hidden option.
Note, that is still just an option though, and if you don't specify
it, Linux libraries by default export all symbols which is a bad thing
so at some point (unless POSIX forbids it) I think -fvisibility=hidden
will become the default for gcc and g++.  Which would mean all Linux
developers (just like developers on Windows platforms) would have to
be aware of library symbol visibility issues from the start (which
would probably be a good thing).

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); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); 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
__________________________

------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today.http://sdm.link/xeonphi
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to