Re: llvm & RTTI over shared libraries

From: Mark Millard <>
Date: Wed, 20 Apr 2022 06:03:33 UTC
Joerg Sonnenberger <> wrote on
Tue, 19 Apr 2022 21:49:44 UTC :

> Am Thu, Apr 14, 2022 at 04:36:24PM +0000 schrieb
>> > After some research I seem to understand that the way that RTTI is handled over shared library boundaries is different between GCC and LLVM.
> I think you are running into the old problem that GCC thinks comparing
> types by name makes sense where as everyone else compares types by type
> pointer identity.

Seems out of date for the GCC information . . . reports:

The new C++ ABI in the GCC 3.0 series uses address comparisons, rather than string compares, to determine type equality.

> GCC is glaringly wrong because types with identical
> names can and often are unrelated. This is especially a problem for
> plugins. The correct way to deal with it is making sure that every type
> has a key function of appropiate visibility and making sure that the
> interface library exports them and every plugin links against it.
> If you do that, dlopen without RTLD_GLOBAL or linking the main program
> without -rdynamic works fine.

Mark Millard
marklmi at