From Crypto++ Wiki
Jump to navigation Jump to search

Bitcode refers to an intermediate representation of object code. It is an abstract encoding that has not been fully compiled into machine code for the architecture for which you are building.

An open question for the library is, should bitcode be used for the library. We don't know the answer at the moment.

We know the library does not build using bitcode at the moment. We recall someone saying they patched the library to build with bitcode, but the self tests ended up segfaulting. In the future the library might build and run with bitcode.

Even if the library builds with bitcode, the intermediate bitcode is probably a bad idea. We think it is a bad idea because the code is malleable and it will change. Additionally, the final machine object code does not exist and cannot be audited.

The concern is not about Crypto++ in particular. It applies to all high integrity modules, like Botan and OpenSSL, too.

A related topic is Link Time Optimization, where the library will eventually change after building the library and during linking to an application.