On 14.01.2016 11:55, Peer Adelt wrote: > Hey guys :) > > We have developed a generic concept to annotate TranslationBlocks during > runtime. The initial idea was to use it for time annotation with data from > static analysis tools. However, we have kept this approach as generic as > possible to allow other kinds of annotation (e.g. power consumption, etc.). > > Our extension expects an XML file specifying the CFG of the program (similar > to what you get from "gcc -ftree-dump-cfg"), where the edges are annotated > with the data, that QEMU ought to accumulate during program execution. Each > edge has a source and target context in which it is executed. > For example: a for-loop that runs several times has its own context dependent > edge for each iteration. We plan on making this more flexible by allowing > to specify iterative context edges, i.e. from context n to context n+1. > > This approach is not limited to one target architecture but we only tested > it for ARM and TriCore so far. > > To show the current state of this patch we have attached a very small example > consisting of an ARM STM32F205 program and a timing annotation XML file (see > reply to this letter). You can provide the XML file to QEMU with the > "-annotation " option. During execution, the "value_sum" field of > the CPUState data structure will accumulate a total value of 70 (cycles). > > Are there any comments? Is this in general a good idea to be added to upstream > QEMU? > > All the best, > Peer > > Peer Adelt (3): > tb-annotation: Added annotation XML file parser > tb-annotation: Add control flow graph mapper > tb-annotation: Activate annotation extension > > Makefile | 5 +- > Makefile.objs | 4 + > Makefile.target | 4 +- > configure | 13 ++ > include/exec/gen-icount.h | 18 +++ > include/qom/cpu.h | 9 ++ > include/tb-annotation/tb-annotation-parser.h | 29 +++++ > include/tb-annotation/tb-annotation.h | 64 ++++++++++ > qemu-options.hx | 8 ++ > tb-annotation/Makefile.objs | 1 + > tb-annotation/tb-annotation-parser.c | 174 +++++++++++++++++++++++++++ > tcg-runtime.c | 99 +++++++++++++++ > tcg/tcg-runtime.h | 4 + > vl.c | 25 ++++ > 14 files changed, 454 insertions(+), 3 deletions(-) > create mode 100644 include/tb-annotation/tb-annotation-parser.h > create mode 100644 include/tb-annotation/tb-annotation.h > create mode 100644 tb-annotation/Makefile.objs > create mode 100644 tb-annotation/tb-annotation-parser.c > See attachment