From a5f03d96eee482cd84861fc8cefff9eb451c0cad Mon Sep 17 00:00:00 2001 From: xleroy Date: Sun, 29 Mar 2009 09:47:11 +0000 Subject: Cleaned up configure script. Distribution of CIL as an expanded source tree with changes applied (instead of original .tar.gz + patches to be applied at config time). git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1020 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e --- cil/doc/cil007.html | 279 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100644 cil/doc/cil007.html (limited to 'cil/doc/cil007.html') diff --git a/cil/doc/cil007.html b/cil/doc/cil007.html new file mode 100644 index 00000000..7d6c0230 --- /dev/null +++ b/cil/doc/cil007.html @@ -0,0 +1,279 @@ + + + + + + + + + + + + + +The CIL Driver + + + +Previous +Up +Next +
+ +

7  The CIL Driver

+We have packaged CIL as an application cilly that contains certain +example modules, such as logwrites.ml (a module +that instruments code to print the addresses of memory locations being +written). Normally, you write another module like that, add command-line +options and an invocation of your module in src/main.ml. Once you compile +CIL you will obtain the file obj/cilly.asm.exe.
+
+We wrote a driver for this executable that makes it easy to invoke your +analysis on existing C code with very little manual intervention. This driver +is bin/cilly and is quite powerful. Note that the cilly script +is configured during installation with the path where CIL resides. This means +that you can move it to any place you want.
+
+A simple use of the driver is: +
+bin/cilly --save-temps -D HAPPY_MOOD -I myincludes hello.c -o hello
+
+--save-temps tells CIL to save the resulting output files in the +current directory. Otherwise, they'll be put in /tmp and deleted +automatically. Not that this is the only CIL-specific flag in the +list – the other flags use gcc's syntax.
+
+This performs the following actions: + +Note that cilly behaves like the gcc compiler. This makes it +easy to use it with existing Makefiles: +
+make CC="bin/cilly" LD="bin/cilly"
+
+ cilly can also behave as the Microsoft Visual C compiler, if the first + argument is --mode=MSVC: +
+bin/cilly --mode=MSVC /D HAPPY_MOOD /I myincludes hello.c /Fe hello.exe
+
+ (This in turn will pass a --MSVC flag to the underlying cilly.asm + process which will make it understand the Microsoft Visual C extensions)
+
+cilly can also behave as the archiver ar, if it is passed an +argument --mode=AR. Note that only the cr mode is supported (create a +new archive and replace all files in there). Therefore the previous version of +the archive is lost.
+
+Furthermore, cilly allows you to pass some arguments on to the +underlying cilly.asm process. As a general rule all arguments that start +with -- and that cilly itself does not process, are passed on. For +example, +
+bin/cilly --dologwrites -D HAPPY_MOOD -I myincludes hello.c -o hello.exe
+
+ will produce a file hello.cil.c that prints all the memory addresses +written by the application.
+
+The most powerful feature of cilly is that it can collect all the +sources in your project, merge them into one file and then apply CIL. This +makes it a breeze to do whole-program analysis and transformation. All you +have to do is to pass the --merge flag to cilly: +
+make CC="bin/cilly --save-temps --dologwrites --merge"
+
+ You can even leave some files untouched: +
+make CC="bin/cilly --save-temps --dologwrites --merge --leavealone=foo --leavealone=bar"
+
+ This will merge all the files except those with the basename foo and +bar. Those files will be compiled as usual and then linked in at the very +end.
+
+The sequence of actions performed by cilly depends on whether merging +is turned on or not: + +Note that files that you specify with --leavealone are not merged and +never presented to CIL. They are compiled as usual and then are linked in at +the end.
+
+And a final feature of cilly is that it can substitute copies of the +system's include files: +
+make CC="bin/cilly --includedir=myinclude"
+
+ This will force the preprocessor to use the file myinclude/xxx/stdio.h +(if it exists) whenever it encounters #include <stdio.h>. The xxx is +a string that identifies the compiler version you are using. This modified +include files should be produced with the patcher script (see +Section 14).
+
+ +

7.1  cilly Options

+Among the options for the cilly you can put anything that can normally +go in the command line of the compiler that cilly is impersonating. +cilly will do its best to pass those options along to the appropriate +subprocess. In addition, the following options are supported (a complete and +up-to-date list can always be obtained by running cilly --help): + + +

7.2  cilly.asm Options

+ +All of the options that start with -- and are not understood by +cilly are passed on to cilly.asm. cilly also passes along to +cilly.asm flags such as --MSVC that both need to know +about. The following options are supported:
+
+       General Options: + +
+Previous +Up +Next + + -- cgit