Sorry for the late reply, I couldn't respond because there was a problem with one of my teeth.
I've gotten a lot of it done now and the communication problem is resolved. I'm communicating with the client using shared memory and nudges and
I'm communicating with Ghidra using sockets.
However, I still have a problem: When I supply the client with a list of basic block addresses I want the client to put instrumentation on them.
From what I've seen I need to "flush" those basic blocks in order to instrument them again.
So it seems I need to call dr_flush_region, but the problem is that dr_flush_region seems to require the size of
the basic block, which I don't have. I tried to get the size of the basic block using drx_instrlist_size,
but that function requires an instrlist_t*, which I also don't have. All I have is the address of the basic block.
So my main question is
- How do I reset instrumentation on basic blocks?