Hi,

I am working on IA64 and gcc4.1.1. My primary work is to use control speculation on IA64 to implement efficient taint tracking. We have already had a paper on ISCA'08.

For this purpose, I add a pass (before the 2nd instruction scheduling) to instrument loads, stores, and compares. During the pass, I identify each INSN by "manually" matching their patterns (since at that time, INSNs in gcc have not bee fully recognized, I have to write my own recognizers for instructions).

However, the downside of this approach is that I may miss some instructions (though most of the instructions have been instrumented), and these uninstrumented ones (though rare) will bring bizarre bugs into the instrumented program. (recently I find one such bug in my instrumented program, missing to instrument one instruction in about 30,0000 instructions...)

So now, I want to add some checking in final to see if my instrumentation is complete. The basic thing I want to do is to associate some attributes to the INSN I want to instrument, and also my instrumentation INSNs, in the added pass. Later in final, I could use GCC's INSN_CODE (or perhaps INSN template) to match all INSNs and see whether I have done all things right.

NOW my problem is: could GCC do this work easily, or I should add my own data structure to record instrumented INSN? I have read some doc about insn attributes, but it seems that they do not fit into my needs...

NOTE: the attributes should be bundled with the INSN, they should go along with INSN in other passes, e.g. scheduling, and should not be deleted by other passes.

Any help is truly appreciated :-)

Thanks !

yours sincerely

Andrew

Reply via email to