Hi all!

I need to simulate some code for a bare metal ARM application, and get a
trace of every machine instruction that gets executed.

Attaching GDB to the qemu-system-arm works, but of course it is slow.

Running `qemu-system-arm -d in_asm` doesn't record every time an
instruction gets executed, so I cannot use that.

Running `qemu-system-arm -d cpu` apparently doesn't execute all the
instructions. I mean, There is a section of my code that does get executed
(I see that from GDB), but looking at the program counter (R15, since
this is ARM) the addresses of these instructions don't appear in the
trace I get. Taking a closer inspection, it seems that a conditional
branch gets executed when debugging, but not in "normal" QEMU

My last resort apart from using GDB is to use one of the TGC plugins, as
I see on the documentation:
https://qemu.readthedocs.io/en/latest/devel/tcg-plugins.html (in
particular, contrib/plugins/execlog.c should be what I need). But I will
need to ship this tool to other people, so I cannot really ask them to
recompile all of QEMU's codebase just to access one single plugin.

So my question is: can I compile just the plugins, so that I can link
against them?

Thanks!

-- 
Alessandro Bertulli

Reply via email to