summaryrefslogtreecommitdiff
path: root/docs/guide/types
diff options
context:
space:
mode:
authorJordan Wiens <github@psifertex.com>2026-05-27 14:55:28 -0400
committerJordan Wiens <github@psifertex.com>2026-05-27 14:55:28 -0400
commit162b406ea28aa5bacc34a00745d8780bcbf58753 (patch)
tree39802866489bd352c54599024e24ee346b44cd35 /docs/guide/types
parentf2ae12d97604da6136b26c184eb7fe30531b4d5e (diff)
add better syntax highlighting for code blocks
Diffstat (limited to 'docs/guide/types')
-rw-r--r--docs/guide/types/platformtypes.md6
-rw-r--r--docs/guide/types/typeimportexport.md118
-rw-r--r--docs/guide/types/typelibraries.md6
3 files changed, 74 insertions, 56 deletions
diff --git a/docs/guide/types/platformtypes.md b/docs/guide/types/platformtypes.md
index cf1b8fc4..93e5f0f4 100644
--- a/docs/guide/types/platformtypes.md
+++ b/docs/guide/types/platformtypes.md
@@ -7,13 +7,13 @@ Binary Ninja pulls type information from a variety of sources. The highest-level
Platform types are used to define types that should be available to all programs available on that particular platform. They are only for global common types. Consider, for example, that you might want to add the following on Windows:
-```
+```c
typedef uint8_t u8;
```
You could write this type into:
-```
+```text
/home/user/.binaryninja/types/platform/windows-x86.c
```
@@ -30,7 +30,7 @@ The base path for these files is in your [user folder](../index.md#user-folder)
For example, something like:
-```
+```bash
$ pwd
/home/user/.binaryninja/types/platform
$ cat windows-x86.c
diff --git a/docs/guide/types/typeimportexport.md b/docs/guide/types/typeimportexport.md
index c245deef..775e0064 100644
--- a/docs/guide/types/typeimportexport.md
+++ b/docs/guide/types/typeimportexport.md
@@ -57,51 +57,61 @@ Since you need to specify the include paths for system headers, you will need to
On these systems, you can run a command to print the default search path for compilation:
- gcc -Wp,-v -E -
- clang -Wp,-v -E -
+```bash
+gcc -Wp,-v -E -
+clang -Wp,-v -E -
+```
For the directories printed by this command, you should include them with `-isystem<path>` in the order specified.
For example on macOS, with Xcode 13:
- $ clang -Wp,-v -E -
- clang -cc1 version 13.0.0 (clang-1300.0.29.3) default target arm64-apple-darwin21.6.0
- ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/local/include"
- ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks"
- #include "..." search starts here:
- #include <...> search starts here:
- /usr/local/include
- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0/include
- /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
- /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
- /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)
- End of search list.
+```text
+$ clang -Wp,-v -E -
+clang -cc1 version 13.0.0 (clang-1300.0.29.3) default target arm64-apple-darwin21.6.0
+ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/local/include"
+ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks"
+#include "..." search starts here:
+#include <...> search starts here:
+ /usr/local/include
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0/include
+ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
+ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
+ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks (framework directory)
+End of search list.
+```
From this example, the flags would be: (note: not including the framework directory line)
- -isystem/usr/local/include
- -isystem/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0/include
- -isystem/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
- -isystem/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
+```text
+-isystem/usr/local/include
+-isystem/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0/include
+-isystem/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include
+-isystem/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
+```
Another example on Arch Linux:
- $ gcc -Wp,-v -E -
- ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../../../../../x86_64-pc-linux-gnu/include"
- #include "..." search starts here:
- #include <...> search starts here:
- /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include
- /usr/local/include
- /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed
- /usr/include
- End of search list.
+```text
+$ gcc -Wp,-v -E -
+ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/../../../../../../../../x86_64-pc-linux-gnu/include"
+#include "..." search starts here:
+#include <...> search starts here:
+ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include
+ /usr/local/include
+ /usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed
+ /usr/include
+End of search list.
+```
From this example, the flags would be:
- -isystem/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include
- -isystem/usr/local/include
- -isystem/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed
- -isystem/usr/include
+```text
+-isystem/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include
+-isystem/usr/local/include
+-isystem/usr/lib/gcc/x86_64-pc-linux-gnu/12.2.0/include-fixed
+-isystem/usr/include
+```
##### For Windows
@@ -109,29 +119,35 @@ For windows, there's no easy command to list all the include paths, so you have
You will end up with something like the following for user mode:
- -x c -std=c99
- -isystem"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.28.29333\include"
- -isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt"
- -isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared"
- -isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um"
+```text
+-x c -std=c99
+-isystem"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.28.29333\include"
+-isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt"
+-isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared"
+-isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um"
+```
Or, for kernel mode:
- -x c -std=c99
- -isystem"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.28.29333\include"
- -isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt"
- -isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared"
- -isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\km"
+```text
+-x c -std=c99
+-isystem"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.28.29333\include"
+-isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt"
+-isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared"
+-isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\km"
+```
Note that some header files might require manually including a specific `windows.h` header which necessitates specifying a target platform to get the appropriate includes:
- --target=x86_64-pc-windows-msvc
- -x c -std=c99
- -include"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\windows.h"
- -isystem"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.28.29333\include"
- -isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt"
- -isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared"
- -isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um"
+```text
+--target=x86_64-pc-windows-msvc
+-x c -std=c99
+-include"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\windows.h"
+-isystem"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\MSVC\14.28.29333\include"
+-isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt"
+-isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared"
+-isystem"C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um"
+```
##### Cross-Platform Targets
@@ -151,13 +167,13 @@ Binary Ninja pulls type information from a variety of sources. The highest-level
Platform types are used to define types that should be available to all programs available on that particular platform. They are only for global common types. Consider, for example, that you might want to add the following on Windows:
-```
+```c
typedef uint8_t u8;
```
You could write this type into:
-```
+```text
/home/user/.binaryninja/types/platform/windows-x86.c
```
@@ -172,7 +188,7 @@ You may wish to provide types that are common across multiple architectures or p
For example, something like:
-```
+```bash
$ pwd
/home/user/.binaryninja/types/platform
$ cat windows-x86.c
diff --git a/docs/guide/types/typelibraries.md b/docs/guide/types/typelibraries.md
index 5848cc8e..8dfece4d 100644
--- a/docs/guide/types/typelibraries.md
+++ b/docs/guide/types/typelibraries.md
@@ -32,8 +32,10 @@ Type Libraries contain details about a specific library that is imported by bina
Type Libraries are named after the source library they are providing types for. When a binary is opened, Binary Ninja finds all of its linked library dependencies, and looks up Type Libraries for them. Those with a File Name or Alternative Name matching the exact text of a library used by the binary will be imported into the analysis. You can see this process in the Log:
- elf: searching for 'libc.so.6' in type libraries
- Type library 'libc.so.6' imported
+```text
+elf: searching for 'libc.so.6' in type libraries
+Type library 'libc.so.6' imported
+```
The [Developer Guide](../../dev/typelibraries.md) contains more details about the implementation details of the Type Library format.