Skip to content

AlexDenisov/bitcode_retriever

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

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

Bitcode Retriever

Retrieves Bitcode from Mach-O binaries

About

Bitcode stores as an xar archive inside of a Mach-O binary.

This tool extracts the archive and puts it near the binary, so it can be easily discovered using xar and llvm-dis

Build

Clone the repo and run make, built binary lays inside of build directory

$ git clone git@github.com:AlexDenisov/bitcode_retriever.git
$ cd bitcode_retriever
$ make

Usage

Note: currently is does not work with static libraries, there is an opened issue #1, if you need this feature please a comment there, it will bump prioity of this project at my personal todo-list.

To use bitcode_retriever simple feed him your binary and it'll produce archive with bitcode.

It accepts both fat and non-fat binaries. For fat binaries it produces separate archive for each slice, e.g.:

$ bitcode_retriever fat_app
i386.xar
x86_64.xar
arm64.xar

for non-fat binaries it produces just one archive with the bitcode:

$ bitcode_retriever non_fat_app
i386.xar

To skip the xar archive and obtain the bitcode immediately, pass the -e argument.

$ bitcode_retriever -e fat_app
i386.1.bc
i386.2.bc
x86_64.1.bc
x86_64.2.bc

The project provides a sample binaries, you can play a bit with them:

$ make subject
$ cd build
$ ./bitcode_retriever i386.o
# or
$ ./bitcode_retriever fat.o

The xar archive stores set of files with bitcode:

$ xar -xf i386.o
$ ls
i386.o 1 2

You can dump LLVM IR from each file (1, 2) using llvm-dis

$ llvm-dis 1
$ llvm-dis 2
$ ls
1 2 1.ll 2.ll

Bugs and issues

If you have any problems or found some bug - feel free to open an issue and/or send a pull request

About

Retrieves Bitcode from Mach-O binaries

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published