Download

Diablo is released under the GNU General Public License. As such you are free to use, modify and redistribute it free of charge, as long as you contribute all changes back to the community. We would very much appreciate it if you cited our LCTES paper [bibtex] if you publish something based on work you've done with Diablo.

Diablo is a research prototype that is under heavy development. Do not expect Diablo releases to be production quality code! However, we are willing to support Diablo users, so if you experience any problems using Diablo, or if you have any questions or suggestions, please contact us.

Latest development version

As the last stable Diablo release is relatively old and out of date, we encourage new users of Diablo to start using the development version instead. You can get this version by anonymous SVN with the following command:

svn co --username anon --password anon https://acavus.elis.ugent.be/svn/diablo/trunk diablo

A number of sample frontends for different architectures are included (in the frontends/ directory), which can be built with the corresponding Makefile.<arch>. Use these makefiles and frontends as inspiration to build your own Diablo-based tools.

Current Diablo release:

Please use the svn version described in the previous section.

Old Diablo releases:

Auxiliary downloads:

In order to work correctly, Diablo needs some information about code and data in a program that a regular GCC-based toolchain does not preserve (the ARM ADS v1.1 does preserve this information). Therefore, you need to patch any GCC-based tool chain before you can use Diablo on programs generated by it. These patches do not influence the generated code, they only preserve some compile-time information that is also useful for Diablo but not for a regular linker.

  • download: binutils patch (updated, now tc-ppc.c compiles again, eh_frame section merging turned off, relaxing turned off for ppc - 2006/05/05), older version: binutils patch (against 2.13.2, should also work against 2.14)
  • gcc patch (against 3.3.2, should work against almost any recent gcc version)
  • glibc patch (against glibc 2.3.2)

Alternatively, we offer some pre-patched and pre-compiled tool chains as well. Please note that you can only generate statically linked binaries with these tool chains (which is all Diablo can handle). Installing them is as easy as unpacking the tar ball and setting up your PATH to point to the executables in the bin/ subdirectory.
WARNING: these are pretty big downloads (up to 130MB). Uncompressed, the largest tool chain takes about 500MB of disk space.

  • A patched distribution of Crosstool-NG to build an ARM-EABI toolchain with GCC 4.3.1, binutils 2.18 and glibc 2.7 (1.3 MB; after unpacking, run the included build.sh script; requires about 2GB free on the current partition during building, but only about 130MB afterwards).
  • A precompiled, patched tool chain for i386 Linux: GCC 3.2.2, binutils 2.13.2.1, glibc 2.3.2. (compressed: 139MB - unpacked: 516MB). Note that that there is a small error in this package, in that some dynamic libraries are looked up in a hardcoded absolute directory. You can fix using the following commands:
    mkdir -p /export/home/dchanet/i686-pc-linux-gnu/lib
    ln -s /lib/libc.so.6 /export/home/dchanet/i686-pc-linux-gnu/lib/libc.so.6
    ln -s /lib/ld-linux.so.2 /export/home/dchanet/i686-pc-linux-gnu/lib/ld-linux.so.2
    ln -s /lib/libdl.so.2 /export/home/dchanet/i686-pc-linux-gnu/lib/libdl.so.2
    
  • A precompiled, patched crosstool chain for ARM Linux (host platform is i386 Linux): GCC 3.3.2, binutils 2.14, glibc 2.3.2. (compressed: 120MB - unpacked: 425MB)
  • The sources for a toolchain consisting of GCC 3.3.2, binutils 2.14.90.0.8 and an uclibc snapshot. Just edit the Makefile to choose the right architecture, and type make. The tool chain will be built automatically. This distribution already contains the necessary patches for i386 and ARM.