Hello all,
The first release of stoat is available.
Stoat is a S.T.atic (LLVM) O.bject file A.nalysis T.ool which is a rewrite of
sfpv (Static Function Property Verification) due to the very quick bitrot of the
clang API (stoat uses only the llvm optimizer pass API).
This tool is designed to evaulate if any realtime function can end up calling a
non-realtime function eg a jack process callback being able to call malloc or
free.
It does this by:
1) Using either inline or external function whitelists and function
blacklists to establish which functions are safe and unsafe.
2) Extracting a function callgraph (including virtual function calls)
from the LLVM IR representation of code (which is effectively one level above
assembly)
3) Perform simple deductions based upon the callgraph
This approach is designed to work best for C/C++ projects and for realtime
verification, but fairly little stops it from generalizing to other languages
(assuming the other languages compile with llvm) and other function properties.
Existing annotations from sfpv should still work, though the only project that
I've seen using them has been jalv so far.
As this might seem quite abstract, here is an example usage with non-timeline:
http://log.fundamental-code.com/2014/08/15/stoat-tutorial-example
Project Home:
https://github.com/fundamental/stoat
Report bugs to:
https://github.com/fundamental/stoat/issues
Mark