-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
additional hooks #4
Comments
Syscall should be easy to add. Mmap as well (although arguably we could do that on the consumer side by parsing syscalls, albeit would have to "recover" information so probably wouldn't be great). Registers are planned, although they're a bit of a pain as it requires per-architecture code for every single QEMU target. Unfortunately there isn't a great way of tracing registers, and they do not have a defined location when running a JIT, rather, each target defines their own structure for register layouts (env pointer in Special registers take the above issues to a whole new level, and I just can't really see that being a thing. Every architecture has completely different ways of doing "special registers", and even just what a "special register" is. I think if I really wanted to kinda hit everything with one change, it could be an unsafe hook that takes in a user-defined number of bytes to literally memcpy() from AREG0 (pointer to The programming goal of this project is largely to just be a high-performance data stream out of QEMU. I really want to keep it that way as to make it a stable code base that isn't tracking a bunch of target-specific hooks at all times in QEMU. I'd rather outsource that to a library that processes traces. I'm always open to getting information out that is otherwise unobtainable, but if it's obtainable in a "generic" sense, I think I'd rather reconstruct it on the processing end. |
Cool project! With a bit of tooling on top, I'll probably be able to replace many of my use cases for usercorn with a tool that works on more complex targets.
There are a few hooks I've found valuable to get a complete picture with this kind of tracing:
Register change tracking is the reason I've wanted something more like cannoli for a long time - it would be so much faster to copy individual register writes to a buffer within the JIT, than what I was doing before (diff the register file repeatedly from a C helper)
The text was updated successfully, but these errors were encountered: