diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2024-03-05 19:50:13 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2024-03-05 20:34:34 -0500 |
| commit | e093c21ed880ac3eb72119be15093ee04f8ce299 (patch) | |
| tree | 9f720ebdc0ae415734b1199ed341668c69710a94 /arch/armv7/README.md | |
| parent | 0609276712622908254065546102381466033141 (diff) | |
Move architecture modules into the API repo
Diffstat (limited to 'arch/armv7/README.md')
| -rw-r--r-- | arch/armv7/README.md | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/arch/armv7/README.md b/arch/armv7/README.md new file mode 100644 index 00000000..e8b263f2 --- /dev/null +++ b/arch/armv7/README.md @@ -0,0 +1,80 @@ +# arch-armv7 +This is the ARMv7 plugin that ships with Binary Ninja. + +## Contributing + +If you're interested in contributing when you submit your first PR, you'll receive a notice from [CLA Assistant](https://cla-assistant.io/) that allows you to sign our [Contribution License Agreement](https://binary.ninja/cla.pdf) online. + +## Building + +Building the architecture plugin requires `cmake` 3.9 or above. You will also need the +[Binary Ninja API source](https://github.com/Vector35/binaryninja-api). + +Run `cmake`. This can be done either from a separate build directory or from the source +directory. Once that is complete, run `make` in the build directory to compile the plugin. + +The plugin can be found in the root of the build directory as `libarch_armv7.so`, +`libarch_armv7.dylib` or `arch_armv7.dll` depending on your platform. + +To install the plugin, first launch Binary Ninja and uncheck the "ARMv7 architecture plugin" +option in the "Core Plugins" section. This will cause Binary Ninja to stop loading the +bundled plugin so that its replacement can be loaded. Once this is complete, you can copy +the plugin into the user plugins directory (you can locate this by using the "Open Plugin Folder" +option in the Binary Ninja UI). + +**Do not replace the architecture plugin in the Binary Ninja install directory. This will +be overwritten every time there is a Binary Ninja update. Use the above process to ensure that +updates do not automatically uninstall your custom build.** + +## Build Example + +### acquire repositories +``` +mkdir ~/repos/vector35 +cd ~/repos/vector35 +git clone git@github.com:Vector35/binaryninja-api.git +git clone git@github.com:Vector35/arch-armv7.git +``` +### environment variables + +`export BN_API_PATH=~/repos/vector35/binaryninja-api` + +### cmake, make +``` +cd arch-armv7 +cmake -DBN_INSTALL_DIR=/Applications/Binary\ Ninja\ DEV.app/ . +make +``` +## Build Troubleshooting + +### example + + CMake Error at CMakeLists.txt:8 (message): + Provide path to Binary Ninja API source in BN_API_PATH + resolution: + ensure BN_API_PATH is in your environment + +### example + + CMake Error at /Users/andrewl/repos/vector35/binaryninja-api/CMakeLists.txt:53 (message): + Binary Ninja Core Not Found + resolution: + ensure BN_INSTALL_DIR is supplied at command line invocation of cmake + ensure some bad directory is not cached in CMakeCache.txt + +### example + + cmake seems to ignore your setting of BN_INSTALL_DIR and other cmake variables + resolution: + rm CMakeCache.txt + +### example + + undefined symbols at link time, like: + Undefined symbols for architecture x86_64: + "_BNClearUserVariableValue", referenced from: + BinaryNinja::Function::ClearUserVariableValue(BinaryNinja::Variable const&, unsigned long long) in libbinaryninjaapi.a(function.cpp.o) + resolution: + ensure that your api repo is on the same channel and at the same commit as the libbinaryninjacore you're linking against + eg: binaryninja is on dev update channel and is up-to-date and binaryninja-api repo is on branch dev with latest pulled + |
