summaryrefslogtreecommitdiff
path: root/arch/armv7/README.md
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2024-03-05 19:50:13 -0500
committerRusty Wagner <rusty.wagner@gmail.com>2024-03-05 20:34:34 -0500
commite093c21ed880ac3eb72119be15093ee04f8ce299 (patch)
tree9f720ebdc0ae415734b1199ed341668c69710a94 /arch/armv7/README.md
parent0609276712622908254065546102381466033141 (diff)
Move architecture modules into the API repo
Diffstat (limited to 'arch/armv7/README.md')
-rw-r--r--arch/armv7/README.md80
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
+