← 返回首页
GitHub - AlexDenisov/bitcode_retriever: Retrieves Bitcode from Mach-O binaries · GitHub
Skip to content

Navigation Menu

Toggle navigation
Sign in
Appearance settings
Search or jump to...

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Resetting focus

AlexDenisov/bitcode_retriever

 master
Go to file
Code

Repository files navigation

More items

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

183 stars

Watchers

9 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Footer

© 2026 GitHub, Inc.