Aliases seem to be a problem for some linkers.  What do you think about
going forward with the RAUW aproach mentioned here?

+    // FIXME: Instead of outputting an alias we could just replace every
use of
+    // AliasDecl with TargetDecl.

FWIW I tried this but it doesn't work because we emit the globals in the
wrong order for RAUW.

Timur feels strongly that we should simply directly call the base dtor when
there is no complete dtor in the MS C++ ABI.  I want to remove the hack
that makes us do that currently, though.  You can see it just below the
dtor emission call to TryEmitDefinitionAsAlias.

Does "InEveryTU" assume the user is using clang or a compiler that produces
similar aliases (gcc)?  That doesn't seem very good.


On Fri, Oct 11, 2013 at 2:17 PM, Rafael Espíndola <
[email protected]> wrote:

> After spending some time figuring out what the actual restrictions ELF
> puts on alias I think this new patch is correct.
>
> What the previous one was getting wrong is that sometimes it would
> output just the base destructor. If we are using aliases and
> implementing weak functions with comdats, we have to make sure every
> translation unit emits comdats with the same symbols. If we don't, the
> linker can decide to keep a copy that has only the base destructor and
> the link gets an undefined reference to the complete destructor.
>
> I have tested the patch by using a patched clang to build a debug
> version of clang.
>
> Cheers,
> Rafael
>
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to