[DynInst_API:] Dyninst for embedded cross-arch


Date: Wed, 13 Jul 2016 12:39:14 +0200
From: RafaelÂStahl <r.stahl@xxxxxx>
Subject: [DynInst_API:] Dyninst for embedded cross-arch
Hi all,

Dyninst has caught our interest at Technical University of Munich Institute for Electronic Design Automation because of its many features of which symbolic execution and static function analysis are most interesting to us.
Our project is about source-binary mapping for timing analysis of 
embedded software in the field of design automation. For this we need 
basic blocks and a control flow graph. These are currently generated by 
hand and struggle with complicated code constructs, indirect jumps and 
generally optimized code.
One change we will have to make is to allow binaries to be loaded even 
when they are not compiled for the same architecture as the host (always 
x86). I already poked around in the code a bit and it seems to be 
possible with the existing abstractions. The main features of Dyninst 
like dynamic analysis and instrumentation/rewriting will obviously not 
work, but those are of no interest to us anyway. Is there anything that 
would make the cross-arch analysis task difficult?
Then of course the architectures of interest need to be implemented. 
Currently these are ARM (32-bit) and OpenRisc. As far as I can tell this 
would at least be the register file, helpers to define register 
semantics and the InstructionDecoder. Apart from that some 
smaller/optional stuff like jump table recognition. Did I miss something 
important here?
We would also need to target Windows, but in your Readme you write that 
only the rewriter is not implemented on Windows. On the other hand, our 
cross-arch scenario would add dependencies to libiberty, libelf and 
libdwarf. MinGW seems to come with libiberty and the others seem to 
compile on Windows. Can you think of anything else problematic here?
How do you overall estimate the feasibility of our changes and the use 
of Dyninst for bare-metal embedded applications? Any tips where to be 
careful or locations to start would be greatly appreciated.
Regards
Rafael Stahl
[← Prev in Thread] Current Thread [Next in Thread→]