<div dir="ltr">Aliases seem to be a problem for some linkers.  What do you think about going forward with the RAUW aproach mentioned here?<div><br><div><div>+    // FIXME: Instead of outputting an alias we could just replace every use of</div>
<div>+    // AliasDecl with TargetDecl.</div></div><div><br></div><div>FWIW I tried this but it doesn't work because we emit the globals in the wrong order for RAUW.</div></div><div><br></div><div>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.</div>
<div><br></div><div>Does "InEveryTU" assume the user is using clang or a compiler that produces similar aliases (gcc)?  That doesn't seem very good.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Fri, Oct 11, 2013 at 2:17 PM, Rafael Espíndola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
After spending some time figuring out what the actual restrictions ELF<br>
puts on alias I think this new patch is correct.<br>
<br>
What the previous one was getting wrong is that sometimes it would<br>
output just the base destructor. If we are using aliases and<br>
implementing weak functions with comdats, we have to make sure every<br>
translation unit emits comdats with the same symbols. If we don't, the<br>
linker can decide to keep a copy that has only the base destructor and<br>
the link gets an undefined reference to the complete destructor.<br>
<br>
I have tested the patch by using a patched clang to build a debug<br>
version of clang.<br>
<br>
Cheers,<br>
Rafael<br>
</blockquote></div><br></div>