<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Mar 14, 2013, at 5:59 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk">richard@metafoo.co.uk</a>> wrote:</div><blockquote type="cite">On Thu, Mar 14, 2013 at 10:00 AM, John McCall <span dir="ltr"><<a href="mailto:rjmccall@apple.com" target="_blank">rjmccall@apple.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; position: static; z-index: auto; ">
<div class="HOEnZb"><div class="h5">On Mar 14, 2013, at 8:14 AM, "Richtarsky, Martin" <<a href="mailto:martin.richtarsky@sap.com">martin.richtarsky@sap.com</a>> wrote:<br>> Hi Rafael,<br>
><br>
> in this case the affected function is called from another function which is implemented in inline assembler, within the extern "C" scope.<br>
<br>
</div></div>Ah, you know, I can't believe we didn't think about inline assembly when we were enumerating potential places where this would bite us.  Too fixated on the JIT case, I suppose.<br></blockquote><div><br>
</div><div>We did think about it (although I'm not sure whether that made it to the list); in fact, this happened in some cases inside LLVM.</div></div></blockquote><div><br></div><div>I do not remember it coming up about inline assembly.  I remember it coming up about dynamic symbol lookups, and we were willing to wave our hands about those because there is very little code in the world that does this sort of symbol lookup into the enclosing process.  I am not willing to hand-wave away inline assembly.</div><br><blockquote type="cite"><div class="gmail_quote"><div>Our conclusion was: if you want to use a function from inline asm, you should use an asm label on that function, otherwise it might get mangled unexpectedly. This is true independent of the static/extern "C" issue, due to some platforms prepending an underscore to symbol names, etc.</div></div></blockquote><div><br></div>Conveniently enough, inline assembly usually can't be shared between platforms that do Pascal mangling and those that don't, because significantly different platforms usually have significantly different compilers and with significantly different inline assembly syntax.  What you're doing is making it more awkward to port inline assembly between compilers on the *same* platform by introducing a totally spurious hurdle, based on a line from the standard that's inconsistent with an overwhelmingly dominant existing practice.</div><div><br></div><div>John.</div></body></html>