Sometimes, the finalizer for an `UcRef` runs so late that the members of the
module have already been set to `None`. We need to make sure that we don't
depend on anything in the module, or we risk getting a Exception when we try
to access the `release_handle` method of `None` (`Uc`).
* Move assembly to S files
* more assembly files
* osx compilation change
* makefile mistake
* add objcopy from crosstool
* use gobjcopy on osx
* start cmocka install cleanup
* move wget to directory option
* move back to cd
* fix copy
* First cut
* free allocated memory
* bad idea
too much switching between python and c
* add debug
* cleanup bad size
* fix mem_unmap and query for Ruby bindings
* ruby bindings: fix issues with GC freeing callbacks while we still have references to them
* ruby bindings: add test for garbage collection of hooks
* ruby bindings: let the VM garbage collect hooks properly this time
* ruby bindings: update garbage collection test to make sure Proc is garbage collected after Uc is collected
* ruby bindings: fix m_uc_hook_add to return the ruby VALUE with proper memory management instead of making another one with bad memory management
* ruby bindings: fix cb_hook_intr signature
* add architecture query
* ruby bindings: only treat certain x86 registers specially if we're actually on x86
* only treat certain x86 registers specially if we're actually on x86 (uc_reg_read and uc_reg_write)
* ruby bindings: read and write ARM64's 128-bit NEON registers
* Update UC_HOOK_MEM_VALID
UC_HOOK_MEM_READ fires before handlers for invalid memory reads, so UC_HOOK_MEM_VALID would technically also be receiving invalid memory reads. Switching to UC_HOOK_MEM_READ_AFTER ensures that only actually valid reads are hooked
* Removed macro change, added comment
Removed the macro change, but added a clarifying comment. May submit a future PR with a new macro added
* Update unicorn.h
will -> may
* Update unicorn.h
* arm64eb: arm64 big endian also using little endian instructions.
* arm64: using another example that depends on endians.
example:
1. store a word: 0x12345678
2. load a byte:
* little endian : 0x78
* big endian : 0x12