This PR introduces BAP as a platform. A significant amount of code is moved from the Bap.Std library into separate plugins and libraries, that can be installed separately. The plugin system is severely reimplemented. Here is the short list of changes, a detailed list will be added later to the `CHANGES.md`. - moved Regular library out of bap. - moved Graphlib from Bap. - made module's state storable - moved x86 from the library - moved ARM from the library - moved Dwarf and Elf from the library. - moved byteweight from the library. - moved traces from the library - rewrote disassembler level - add properties to insn - moved llvm to plugins - added caching framework - added printing framework - redesigned build system - reimplemented plugin framework - Current set of plugins: * emit-ida-script extract a python script from the project data type * dump-symbols dump symbol information as a list of blocks * arm provide ARM lifter * piqi-printers provides piqi serialization for main data types (BIL, IR) * phoenix output project information in a phoenix format * print print project in various formats * cache provide caching services * byteweight find function starts using Byteweight algorithm * x86 provide x86 lifter * llvm provide loader and disassembler * ida use ida to provide rooter, symbolizer and reconstructor * read-symbols read symbol information from file * elf-loader read ELF and DWARF formats in a pure OCaml Note: this PR doesn't update the documentation, it will be pushed later.
Latest commit 93ee72c
Feb 29, 2016