Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 

README.rst

Light DWARF experiment

This is an experiment to generate lightweight DWARF informations, that are stripped to only contains necessary information for doing FFI for C functions.

This is done through an LLVM pass that removes unnecessary information for DWARF representation that exists in the LLVM IR, after the optimisations are run on the IR.

Usage

This pass is based on LLVM 5.0.

To compile it:

$ mkdir build && cd build && cmake -DLLVM_CONFIG=/path/to/llvm-config -DCMAKE_BUILD_TYPE=release ..

To use it:

$ /path/to/clang -Xclang -load -Xclang ./LightDwarf.so -O2 a.c -c -o a.o

Note that you need optimisations for the pass to run!

Experiments

These experiments need the ninja build system (https://ninja-build.org/).

libarchive

$ mkdir /tmp/libarchive && ./libarchive.sh /tmp/libarchive /path/to/clang /path/to/LightDwarf.so

On my system (Debian Linux x64), this gives:

Original
-rwxr-xr-x 1 aguinet aguinet 727K Mar  8 21:26 build_org/libarchive/libarchive.so.16
-rwxr-xr-x 1 aguinet aguinet 1.8M Mar  8 21:26 build_org/libarchive/libarchive.so.16.debug
Light
-rwxr-xr-x 1 aguinet aguinet 727K Mar  8 21:26 build_light/libarchive/libarchive.so.16
-rwxr-xr-x 1 aguinet aguinet 536K Mar  8 21:26 build_light/libarchive/libarchive.so.16.debug

where *.so files are stripped from debug informations, and *.debug files represent only the debug informations.

zlib

$ mkdir /tmp/zlib && ./zlib.sh /tmp/zlib /path/to/clang /path/to/LightDwarf.so

On my system (Debian Linux x64), this gives:

Original
-rwxr-xr-x 1 aguinet aguinet  99K Mar  8 21:27 build_org/libz.so.1.2.11
-rwxr-xr-x 1 aguinet aguinet 161K Mar  8 21:27 build_org/libz.so.1.2.11.debug
Light
-rwxr-xr-x 1 aguinet aguinet 99K Mar  8 21:27 build_light/libz.so.1.2.11
-rwxr-xr-x 1 aguinet aguinet 61K Mar  8 21:27 build_light/libz.so.1.2.11.debug

where *.so files are stripped from debug informations, and *.debug files represent only the debug informations.

About

Experiment to create lightweight DWARF informations for FFI

Resources

Releases

No releases published

Packages

No packages published
You can’t perform that action at this time.