llvm-mapper 0.0.4

A library for mapping the contents of bitstreams into LLVM IR models
Documentation
use std::convert::TryFrom;
use std::fs;

use anyhow::Result;
use clap::{App, Arg};
use llvm_bitstream::Bitstream;
use llvm_mapper::unroll::UnrolledBitcode;

fn app<'a>() -> App<'a> {
    App::new(env!("CARGO_PKG_NAME"))
        .version(env!("CARGO_PKG_VERSION"))
        .about(env!("CARGO_PKG_DESCRIPTION"))
        .arg(
            Arg::new("input")
                .help("the bitstream input to unroll")
                .index(1)
                .required(true),
        )
}

fn main() -> Result<()> {
    env_logger::init();
    let matches = app().get_matches();

    let input = {
        let input = matches.value_of("input").unwrap();
        fs::read(input)?
    };

    let (_, bitstream) = Bitstream::from(&input)?;

    let unrolled = UnrolledBitcode::try_from(bitstream)?;
    println!("{:#?}", unrolled);

    Ok(())
}