Jeremy Fitzhardinge wrote: > For example, say we wanted to put a general call for sti into entry.S, > where its expected it won't touch any registers. In that case, we'd > have a sequence like: > > push %eax > push %ecx > push %edx > call paravirt_cli > pop %edx > pop %ecx > pop %eax > > > If we parse the relocs, then we'd find the reference to paravirt_cli. > If we look at the byte before and see 0xe8, then we can see if its a > call. If we then work out in each direction and see matched push/pops, > then we know what registers can be trashed in the call. This also > allows us to determine the callsite size, and therefore how much space > we need for inlining. > No, that is a very dangerous suggestion. You absolutely *cannot* do this safely without explicitly marking the start EIP of this code. You *must* use metadata to do that. It is never safe to disassemble backwards or "rewind" EIP for x86 code. Zach _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/virtualization