<div dir="ltr">On Fri, Aug 16, 2013 at 12:29 PM, Jonathan Sauer <span dir="ltr"><<a href="mailto:jonathan.sauer@gmx.de" target="_blank">jonathan.sauer@gmx.de</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<div class="im"><br>
> Another approach I'd be comfortable with would be to perform a second pass looking for a string match if the pointer match fails, and to emit a differently-worded message in that case (explaining that the problem might be due to an RTLD_LOCAL library, or using hidden visibility for the type, or linking against code produced by a compiler that violates the ABI).<br>

<br>
</div>+1. Isn't the case of two different type_info objects for the same type a violation of ODR anyway<br>
(i.e. wouldn't this be something the UB sanitizer should check for)?</blockquote><div><br></div><div>An ODR violation is one way you can get to this situation, yes. I don't think it's reasonable to apply the ODR to hidden entities in separate DSOs (whether they're hidden through visibility or RTLD_LOCAL) though, because those mechanisms give more guarantees than the C++ standard provides. So I don't think we can argue that this is /always/ an ODR violation.</div>
</div></div></div>