dlopen() and placing exception body in .cpp file

Dimitri Tcaciuc dtcaciuc@gmail.com
Tue Aug 31 09:17:00 GMT 2010


Right... So then I imagine even the 'fix' where I'm compiling
exception destructor into a separate .so file is still subject to
breakage and std::exception catching works because every C++ program
actually links against libstdc++ and not just dlopens it, yes?

Dimitri.


On Mon, Aug 30, 2010 at 4:51 PM, Ian Lance Taylor <iant@google.com> wrote:
> Dimitri Tcaciuc <dtcaciuc@gmail.com> writes:
>
>> Now, according to `dlopen` manual, I have to load with RTLD_GLOBAL for
>> RTTI to function properly.
>
> Yes.  Anything else is unsupported.  Even if we explain how it all works
> today, it may change tomorrow.
>
> Basically, it works by doing pointer comparisons on the RTTI
> information.  That works reliably when using RTLD_GLOBAL.  When using
> RTLD_LOCAL, whether it works depends on exactly where the code creating
> the object runs, because where that code runs determines which pointer
> it will get when it refers to the symbol containing the type
> information.
>
> Ian
>



More information about the Gcc-help mailing list