Skip to content
Snippets Groups Projects
  1. Feb 15, 2020
    • Daniel Henry-Mantilla's avatar
      Fix Rust bindings (#437) · 27d86048
      Daniel Henry-Mantilla authored
      - A bool coming from C cannot be trusted; functionally it is a c_int,
          and conversion to bool must be done by comparing to 0;
      
        - similarly, a `#[repr(C)]` enum cannot be trusted to be a `u32`;
          it is more often than not a `c_int`. This could cause breakage with
          the ABI of the C functions of the binding. So the signatures and
          enum definitions have been adapted based on the
          `include/keystone/keystone.h` definitions.
      
        - and most importantly: a ks_handle is a `ks_engine *` in C parlance,
          and using `size_t` to represent it is not the right way. Moreover,
          so doing prevents the `Sync` and `Send` traits from being
          auto-unimplemented, meaning that this is implicitly asserting that
          keystone is multithread-safe, even for the same instance. If that is
          the case, then a `unsafe impl Sync for Keystone {}` (ditto for
          `Send`) should be added to make such assertion explicit.
      
          That's why an opaque type using the classic Rust idiom of a
          zero_sized #[repr(C)] struct has been made (while waiting for Rust
          to feature external types), and `Option<ptr::NonNull<_>>` is being
          used as the pointer type (equivalent to *mut _), but it allows to
          communicate nullable / non-nullable invariants at the type-level.
          This has then been transposed to the internals of keystone-rs.
      Unverified
      27d86048
  2. Aug 02, 2019
    • Boris-Chengbiao Zhou's avatar
      Various improvements to the Rust bindings (#401) · ffe054aa
      Boris-Chengbiao Zhou authored
      * 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
      ffe054aa
  3. Sep 16, 2018
  4. Apr 01, 2018
  5. Mar 30, 2018
  6. Oct 26, 2017
  7. Oct 02, 2016
  8. Sep 09, 2016
  9. Jun 05, 2016
  10. May 31, 2016
  11. May 30, 2016
Loading