<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Thu, Apr 14, 2016 at 6:45 AM Dean Michael Berris <<a href="mailto:dberris@google.com">dberris@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thanks for looping me in Eric!<div><br></div></div></blockquote><div><br></div><div>:)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div></div><div>If I was going to suggest anything here, I'd like to think about a more general approach than a very specific attribute like this. My preference is something like "patchable-function"="kind,kind,..." (if that's even possible). This allows us to have common infrastructure for being able to implement different kinds of function-level patching routines at the same time or even just generalising this mechanism with the instrumentation attribute(s).</div><div><br></div><div>It would help probably if I'm able to say more, potentially in the form of an RFC for what Eric and I are working on. :D</div><div><br></div></div></blockquote><div><br></div><div>Yeah, we're almost there right? Sanjoy is jumping the gun on us a bit :)</div><div><br></div><div>patchable-function is a fairly terrible name, but an enum list of valid kinds seems to work for me. We might end up having to make it an exclusive list rather than a combined list due to people wanting different size patchable areas.</div><div><br></div><div>-eric</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div></div><div>Cheers</div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Apr 14, 2016 at 6:13 AM Eric Christopher <<a href="mailto:echristo@gmail.com" target="_blank">echristo@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Thu, Apr 7, 2016 at 4:35 PM Sanjoy Das <<a href="mailto:sanjoy@playingwithpointers.com" target="_blank">sanjoy@playingwithpointers.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Eric,<br>
<br>
Eric Christopher wrote:<br>
 > Two things:<br>
 ><br>
 > a) I'm not against this<br>
<br>
Great!<br>
<br>
 > b) So, what's your use case? I've got something I'm idly working on with<br>
 > someone else where we want patchable targets in both prologue and<br>
 > epilogue (and some other places...), and am thinking of how to make this<br>
 > someone generic enough to build off of there.<br>
<br>
We plan to use this to be able to divert control flow from an LLVM<br>
compiled function to "somewhere else" where the "somewhere else" is<br>
usually a differently optimized version of the same function.  One<br><br></blockquote><div><br></div></div></div><div dir="ltr"><div class="gmail_quote"><div>Right. So, I've got a use case that I'm working on over here that uses, basically, patchable prologue and epilogue and am hoping that this ends up being general enough for both.</div><div><br></div><div>I'll take a look at the patch since you've sent it out, but would really like to not have to change a lot of how it works. :)</div></div></div><div dir="ltr"><div class="gmail_quote"><div><br></div><div>-eric </div></div></div></blockquote></div>
</blockquote></div></div>