Hi Giovanni,

On Sat, 2005-07-30 at 15:36 +0200, Giovanni Bajo wrote:
> I'm slow, but I can't understand why a careful design of the interfaces of
> the dynamic libraries

        Well - sure, depends how 'careful' you are ;-) clearly if no C++
classes with virtual methods form the interface of any library, then
there is no problem ;-) unfortunately, mandating that would rather
cripple C++.

>  together with the new -fvisibility flags, should not
> be sufficient. It worked well in other scenarios

        -fvisibility is helpful - as the paper says, not as helpful as the old
-Bsymbolic (or link maps exposing only 3 or so functions) were. However
- -fvisibility can only help so much - if you have:

class LibraryAClass {
        virtual void doFoo(void);
};
class LibraryBClass : public LibraryAClass {
        virtual void doBaa(void);
};

        then there are 2 problems:

        a) there is no symbol visibility that will trigger internal
           binding in addition to a symbol export. ie. if 
           'LibraryBClass' is a public interface - no useful
           visibility markup can be done; and hence we have a named
           relocation for 'doBaa's vtable slot.
           [ IMHO this is a feature-gap, we need a new ('export'?)
             visibility attribute for this case ].

        b) even if LibraryBClass is a 'hidden' class - to build it's
           vtable we have to have a slot for 'doFoo' which is in
           an external library (A) => another named relocation. An 
           unavoidable consequence of using virtual classes as part of
           a library's API.

> IMHO, it's unreasonable to break the C++ ABI for 1 second of warm time
> startup.

        Well - it's an option that was considered, although - as you say -
highly unpleasant, and probably quite unnecessary - as the paper
explains.

        Regards,

                Michael.

-- 
 [EMAIL PROTECTED]  <><, Pseudo Engineer, itinerant idiot

Reply via email to