Does Use-Define Chain(Graph) Work?

hi diablo developers:

I installed diablo-0.3 on Intel Pentium M Processor and open the Use-Define Analysis option, but it seemed not work. Do i need any other configurations?



Diablo complains about missing object files (e.g. /tmp/ccNN6Z96.o). How do I fix this?

To run correctly, Diablo needs ALL the original object files and libraries the linker used to piece the executable together. There are several reasons for this, the most important being that we need the relocation information that is only present in the relocatable object files to safely transform the binary. You can save the object files by building the executable in two steps:

  • First, compile all object files:
    gcc -c hello.c
  • Second, link them all together:

    gcc -static -Wl,-Map, -o hello hello.o

PLDI tutorial slides

If you want some in depth information about Diablo, you can take a look at the tutorial we presented at PLDI 2006. Below you will find the slides of that tutorial.

Slides Original presentation Pdf version
Cover cover.odg cover.pdf

Graphical error message showing the control flow graph

The lancet module is adapted so that all dependencies on the anopt module are removed. This was needed tom implement new functionality, ie. a GFATALBBL macro. If you link the lancet library to your own command line-based diablo frontend, you can call GFATALBBL with an error message and a basic block as argument. This will show your error message on the screen when the GFATAL is hit, and on top of that it will draw the control flow graph containing the basic block with that block centered in the window. You can then browse through the graphs as is done in existing Lancet frontends and when you close the window that shows the first cfg, your diablo frontend terminates.

Diablo and Loco not loading: "Unknown object filetype ... diabloobject.c:148"

I compile the following program:

typedef enum b {false = 0, true = 1} bool;

bool check(int key_part1, int key_part2)
return true;
return false;

int fun(int key)
int a=1;
if (key<1)
a *= key--;
}while (key>1);
return a;

main(void) {

I am using a fedora core 4 box.
Using the toolchain I downloaded for arm I compiled

./toolchain-arm-glibc/bin/arm-linux-gcc -static -c check.c

Then I linked

./toolchain-arm-glibc/bin/arm-linux-ld -Map check.o -o check

How to install a uClibc toolchain for the arm xscale(binutils 2.16.1, gcc 4.0.2, uClibc 0.9.28)

We have succesfully installed a cross-toolchain for the ARM architecture based on uClibc. The installation procedure is explained below. It is based on the steps explained on this uClibc page.

  • Get your copy of buildroot (eg. from
  • Unpack the tarball on your Linux system somewhere
  • run 'unset CC'.
  • run 'make menuconfig'
  • Select the things you want to build. If you only want a
    toolchain, leave everything except the toolchain disabled.

PLDI tutorial

Sat, 2006-06-10 12:00

News Item:
At PLDI 2006 we will be presenting a Diablo tutorial. The PLDI tutorials are held on June, 10-11, 2006. The Diablo tutorial will be held on June 11, starting at 8:30am. For details on the tutorials, you can visit the PLDI 2006 tutorials page
For further information about PLDI, visit the PLDI 2006 homepage.
If you want to start using Diablo, or find out more on link-time rewriting, we encourage you to come to the tutorial. We will give a good introduction to Diablo, but also to some fundamentals of link-time rewriting in general. All main Diablo developers will be there, so you have a change to meet them and to discuss ideas and problems you might be having. Furthermore, we know that a number of PhD students who are already using Diablo will be there, so it is possible to meet them as well, and to extend your network.

Diablo 0.4.2 released

News Item:
Version: 0.4.2
Release Date: February 3 2006
Modules: support object flowgraph anopt lancet kdiablo

Loco 0.0.1 released

Tue, 2006-01-03 17:00

News Item:
Loco 0.0.1 is out. See the Loco-page for more details...



This Diablo application for x86 code obfuscation, called Loco, is now freely available!

Version: 0.0.1
Release Date: January 03 2006
Modules: support object flowgraph anopt lancet flatten opaque

We are definitely interested in your feedback. If you have problems using Loco, or if you have suggestions or questions, subscribe to the mailing list and/or send mail to

diablo at

Syndicate content