Gibraltar is a binary instrumentation tool to make legacy-code (for which there is no source code available) work with TM. Gibraltar is developed in C. Gibraltar was implemented using the publicly available PIN instrumenter.
Currently Gibraltar can run in two modes of instrumentation: either the whole application is executed in Just-In-Time (JIT) mode, while instrumentation is only added inside of transactions, or JIT mode is only enabled during transactions. In transactions, all loads and stores are redirected to the STM. Transactified functions can be detected based on a prefix in binaries and libraries by parsing the ELF headers.