Find a file
Gaulthier Gain f25637cdb7 Add binary analyser code to the toolchain
This commit adds the binary analyser code to the toolchain. This
binary analyser adds various features such as gathering ELF
information (e.g., functions, symbols, ...), micro-libs inspection,
ELF comparison, ELF pages division, ... Note that it was developped
with Unikraft structure in mind.

The binary analyser can be used as an external tool with the
'--binary' argument. A specific json file should be provided which
contains specific fields (see 'bin_analysis_example.json'). Please,
see the wiki for further information.

Signed-off-by: Gaulthier Gain <gaulthier.gain@uliege.be>
2021-01-30 12:37:27 +01:00
configfiles Add base code 2020-09-16 09:14:26 +02:00
srcs Add binary analyser code to the toolchain 2021-01-30 12:37:27 +01:00
testfiles Add base code 2020-09-16 09:14:26 +02:00
.gitignore Add base code 2020-09-16 09:14:26 +02:00
bin_analysis_example.json Add binary analyser code to the toolchain 2021-01-30 12:37:27 +01:00
CONTRIBUTING.md Add base code 2020-09-16 09:14:26 +02:00
COPYING.md Add base code 2020-09-16 09:14:26 +02:00
MAINTAINERS.md Add base code 2020-09-16 09:14:26 +02:00
README.md Add base code 2020-09-16 09:14:26 +02:00

Unikraft Tools

Unikraft is an automated system for building specialized OSes and unikernels tailored to the needs of specific applications. It is based around the concept of small, modular libraries, each providing a part of the functionality commonly found in an operating system (e.g., memory allocation, scheduling, filesystem support, network stack, etc.).

This repo contains all tools related to Unikraft, and in particular the main.go which acts as a single point of entry for all Unikraft operations, including the downloading, building and running of Unikraft applications.

Note that this repo in general, is currently under heavy development and should not yet be used unless you know what you are doing. As things stabilize, we will update this file to reflect this.

Toolchain

Welcome to the Unikraft tools wiki!

The Unikraft tools are a set of tools to automatically build images of operating systems targeting applications. The toolchain will include the following tools:

  1. Decomposition tool to assist developers in breaking existing monolithic software into smaller components.
  2. Dependency analysis tool to analyse existing, unmodified applications to determine which set of libraries and OS primitives are absolutely necessary for correct execution.
  3. Automatic build tool to match the requirements derived by the dependency analysis tools to the available libraries constructed by the OS decomposition tools. This one is composed of two components: a static analysis and a dynamic analysis.
  4. Verification tool to ensure that the functionality of the resulting, specialized OS+application matches that of the application running on a standard OS. The tool will also take care of ensuring software quality.
  5. Performance optimization tool to analyse the running specialized OS+application and to use this information as input to the automatic build tools so that they can generate even more optimized images.

For now only the Dependency analysis tool and the Automatic build tool are available.

Installation and documentation

For installation and documentation, a wiki is available on this address.

Contribute

Unikraft tools is an open source project (under MIT license) and is currently hosted at https://github.com/gaulthiergain/tools. You are encouraged to download the code, examine it, modify it, and submit bug reports, bug fixes, feature requests, new features and other issues and pull requests.