I have another question vaguely related to my previous one. To recall, I'm running QEMU in single-process mode on an ARM program, passing -d exec,in_asm and trying to reconstruct the program's execution trace.

Unfortunately, I don't have as much information here, and the program under test is now a real program and not a toy test. I'm also working off of a QEMU version that I've hacked the logging code a little bit to output thread IDs and and get a more atomic log, because this program is multithreaded; I'm not entirely sure that I have all of this right, as I still see occasional interleaving of lines and other weird artifacts.

So I'm afraid I'm asking a bit for some psychic debugging; feel free to wing some shots in the dark if anything comes to mind. I also think I should have an alternative (really... better) way of doing my overall goal of getting a full trace, so if you don't have ideas that's not the end of the world.


With those caveats out of the way:

The trace shows the disassembly for block that ends with a direct branch:

[tid=22733] IN:
[tid=22733] 0x00024178:  e3a03000      mov      r3, #0  ; 0x0
....
[tid=22733] 0x000241a8:  eb0000ae      bl       0x24468

However, I never see a line that says

Trace ... [24178]

I also have the inverse problem. I have multiple instances of

[tid=22733] Trace 0x555555a500c0 [00024468]

but I never see a disassembly for the block 0x24468.


So... any wild guesses if there's some QEMU optimization or whatever that is mucking with this?

Evan Driscoll

Reply via email to