Modern software engineering techniques introduce an overhead to programs in terms of performance and code size. A traditional development environment, where only the compiler optimizes the code, cannot completely eliminate this overhead. To effectively remove the overhead, tools are needed that have a whole-program overview. Link-time binary rewriting is an effective technique for whole-program optimization and instrumentation.
Diablo is a novel framework to reliably perform link-time program transformations. This framework is designed to be retargetable, supporting multiple architectures and development toolchains.
While Diablo's initial focus has been mostly on program compaction, binary rewriting has a much broader range of applications: speed optimizations, power consumption optimizations, size optimizations, program obfuscation and watermarking, instrumentation, etc.
Diablo is released under the GNU General Public License v2. As such, it is free to use, modify and redistribute it free of charge, as long as you contribute all changes back to the community.
More information on Diablo can be found here: https://diablo.elis.ugent.be/