* Fix Rust bindings
* Various small improvements for the Rust bindings
* Remove unused dependencies
* Use the cmake crate to compile keystone
* Add Windows support to Rust bindings
* Cleanup doc a bit
* Fix symlink path
* Link to C++ standard library
* Build all keystone targets
* Refactor to target .NET Standard 1.1
* Added Nuget details to .csproj
* Reviewed Engine methods and docs; added own Exception type.
* Added migration guide for .NET bindings.
* Don't build universal binaries by default
Starting Xcode 10 beta, there's no support for i386.
This commit changes the default build on iOS to regular libraries
instead of universal binaries.
Build of universal binaries is still supported with macos-universal.
* Add macos-no-universal option (compatibility)
Keep the default to be macos-no-universal, but add it as an option as
well for backward compatibility.
* Add the structure for the Java Bindings
Set up the structure hosting the Java bindings using JNA,
and provides a binding for the function ks_version.
* Ignore the compiled extension of macOS libraries.
* Add infrastructure to open and close Keystone handles.
Keystone enumerations have been added, as well as the required
wrappers for JNA to convert the enumerations to and from the
native library.
Create exceptions for handling issues related to Keystone.
Implement a cleaner that automatically collect any opened
Keystone handles when a Keystone instance is garbage collected.
* The close method of Keystone is now thread-safe.
* Rename the exception KeystoneOpenFailedException into OpenFailedKeystoneException.
* Add the assemble function into the wrapper of Keystone.
* Enhance the exceptions thrown by Keystone using ks_strerror.
The exception classes have been refactored to shorten hardcoded
error messages into the wrapper and instead, rely on the error
messages generated by the native library, thanks to the function
ks_strerror.
* Add the ability to check with a given architecture is supported.
Enhance the wrapper to map the function function ks_arch_supported
in order to determine whether a given architecture is supported.
* Add the features the change the assembly syntax and resolve symbols.
Enhance the wrapper in order to support the changes of options.
* Document the class KeystoneEncoded.
* Add additional unit tests for a better coverage.
* Reorder the native functions import and document the native functions prototype.
* Optimize the code.
* Add the target folder to the gitignore.
* Add missing Javadoc annotations for the exceptions.
* Add a gitkeep for the folder hosting the Keystone library for macOS.
* Update the Maven configuration for version and dependencies.
Use the version convention defined in the README, add a couple
of testing dependencies and plugins to package the bindings in
a fat JAR and enable Maven to use jUnit 5.
* Use JNA Direct Mapping for better performances on native function calls.
* Add the README.
* Add myself to the credits :)
* Use the syntax highlighting of Java in the README.
* Fix a typo.
* Optimize imports.
* Add predefined folders hosting the library Keystone on Windows.
* Add the Java bindings to the README of the bindings summary.
When compiling on linux, use GNUInstallDirs to automatically determine
the appropriate libdir path for multi-arch builds instead of hardcoding
lib/ or lib64/. GNUInstallDirs should follow the FHS appropriately for
non-debian platforms that place libs in lib64/. This also removes the
need to specify `lib64` on the command line when building for a
non-debian system that follows the linux FHS.
When compiling with cmake directly on debian and specifying
`-DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_LIBRARY_ARCHITECTURE=<arch>`, the
libdir should be set to /usr/lib/<arch>/.
A REX prefix byte must immediately precede the opcode byte or the
opcode escape byte. Emit segment override and address size prefix
bytes before a REX prefix byte.
* Include bindings for masm x86 and other x64 assemblers
* Added examples RadASM projects for x86 and x64 assembler
Removed stub lib files
Added readme.md
* removed stub lib files
* Fixed passing address parameter of ks_asm as qword size.
Added unzipped source folders for examples
Removed extra lines in text files
* Removed additional extra lines at end of text files
* Renamed readme.md to README.md, removed additional binaries.
* Rename readme.md to README.md
* Removed additional non-required files. Have to leave .dlg files as they are required for the main dialog examples and examples wont compile without them.
* Updated bindings to add masm binding by mrfealress
This prevents symbol collisions when the Keystone library is linked with the LLVM libraries.
Renaming was done by the following repository-wide substitutions:
* `namespace llvm` -> `namespace llvm_ks`
* `llvm::` -> `llvm_ks::`
When enabled, the assembled code will be returned as bytes (str on
Python 2) instead of a list of integers, this is more memory efficient,
faster (It's created using ctypes.string_at instead of a loop in
Python), and more convenient since that's the type that most code that
works with bytes in Python expects (That includes capstone).
Defaults to `False` for backwards compatibility, since changing the
return type is a breaking change.
using `data_files` dict prefixed with
`SITE_PACKAGES = os.path.join(get_python_lib(), "keystone")` is not
portable, see #235 and #297 for details. Regular setup configuration does
not work, e.g., specifying `package_data` etc, since that only affects
`sdist`.
The fix is a hack: customize `install_lib` to explicitly copy the file
into keystone install dir.