|Théophile Bastian c08672719c Fix Zappa-Nardelli -> Zappa Nardelli||1 year ago|
|dependency_graph||1 year ago|
|README.md||1 year ago|
The goal of this internship was to investigate and implement a compiler from DWARF unwinding data to native assembly code. The various repositories listed on the git summary page are the various components of the project, plus some off-topic (at various degrees) code I wrote during the internship.
Each repository includes a
README.md file with detailed information about
what it does, how it is supposed to be used, etc.
abstract: this repository, provides a description/summary of the projects,
and gives insights of how they interact with each other.
report: the internship report repository, including
.tex files, images,
source codes, etc.
libunwind-eh_elf: a fork of libunwind
working with eh_elfs, with only a slight interface change (an additional
parameter to an initialisation function).
dwarf-assembly: the compiler itself, along with benchmarking, stats and
various helper scripts.
dwarf-semantics: a subset of
report that describes the semantics of the
compiled DWARF. Outdated.
PKGBUILD files for various uncommon libraries on
dwarf-assembly depends. A
PKGBUILD is a package building script
made for Archlinux.
perf-eh_elf: a fork of
perf working with
perf is originally developed within the Linux
kernel source tree, this repository was rerooted to only include
tools/perf. However, to be compiled,
perf needs the other files from the
Linux source tree. See this repository's
README.md for more details.
dwarfinterpret: a first project, providing features close to
This was made as an exercise with DWARF, to better understand how it works,
at the beginning of the internship.
frame-machine: a fork of Stephen Kell's
frame-machine.c. This was also made to better understand DWARF, and is a
C++ template-based unwinder.
eh_frame_check_setup: a collection of scripts to automate and ease the use
a tool developed by
Francesco Zappa Nardelli, my advisor, to
check the consistency and correctness of the DWARF unwinding data of
arbitrary binaries. Outdated, as the up-to-date version can be found in
the above-mentioned Github repository.
If you use Archlinux, install the three
pkgbuilds. If not,
install the three libraries
all three by Stephen Kell. This can be tricky.
Clone the repository
dwarf-assembly and run
make. If the libraries from
the previous step are installed and available in standard directories, this
step should work without any particular problem.
From now on, you can compile
eh_elf. Follow the instructions from
To use those
eh_elfs, clone and build
libunwind-eh_elf. Follow the
instructions from the
To also use
perf, clone and build
perf-eh_elf and follow the instructions