JiTI86

This is JiTI86 (version 0.2), a just-in-time instrumentation tool for Intel binaries. The tool allows you to create a dynamic loadable library that can be attached to a dynamic linkable program running under Linux. The only prerequisite is a fairly recent binutils package (binutils-2.9.5.0.22 is OK).

JiTI86 can instrument: -all memory operations in the statically linked part of the executable -calls of dynamic linked procedures (e.g. malloc(), printf(), ...)

It is our goal to extend JiTI86 to allow it to instrument dynamic linked code and procedure calls of statically linked code in the near/far future...

In order to show the usefulness of JiTI86, JiTI86 is accompanied by a number of backends: -a module that traces all memory operations -a module that traces all executed code -a module that detects all kinds of memory errors -a coverage analysis tool -...

The modules are attached to applications using the LD_PRELOAD environment variable. Source SO/alias (cd SO; . alias) in order to set a number of aliases that change the LD_PRELOAD variable for you.

The file sample contains a sample session showing the compilation and usage of JiTI86.

backends/bandwidth.c is a sample backend.

scripts contains some interesting script that perform some backprocessing of log files that contain information about the executed code. show_source uses debug information in the executable to transform the list of executed assembly instructions in a list of executed C instructions. profile_code shows, for each C line, the number of times it has been executed.

Normally, JiTI attaches itself to all programs, even `ls`, `cat`, ... In order to limit the number of trace files generated, JiTI releases itself from programs that are not started in their own directory. E.g. in order to trace `ls`, you should copy it to a directory where you have write access and execute `ls` using `./ls`.

For more information about the internal working of JiTI86, we refer to Ronsse, M.; De Bosschere, K. JiTI: A Robust Just in Time Instrumentation Technique Proceedings of Workshop on Binary Translation - 2000 Vol. 29, No. 1, pp. 43-54, Computer Architecture News March, 2001. ACM Press, Philadelphia, a paper on JiTI for the SPARC processor. Although the Intel instruction set bares no resemblance whatsoever with a clean RISC instruction set, comparable instrumentation techniques are used. Contact me for a copy of the paper.

Authors: