* Remove global vars from librz/arch/p/analysis/analysis_or1k.c
* Remove global from librz/arch/p/analysis/analysis_ppc_cs.c
* Remove global from asm_pyc.c and refactor pyc implementation.
* Add documentation and test for /Rk command
* Implement constraint filtering for /Rk command
- Add constraints field to RzRopSearchContext
- Pass parsed constraints from handler to search context
- Implement match_rop_constraint() and match_constraints() in rop.c
- Filter gadgets based on user constraints in process_disassembly()
- Add tests for /Rk filtering (eax=1, ecx=0, multiple constraints)
* Update test/db/cmd/cmd_rop
* Add an in-place addition of bitvectors.
* Decouple _elem_len from assumption it has just enough bytes to hold len in bits.
* Add in-place copy of bits.
* Use default copy bits bitvector function.
* Mark stack allocated bit vector.
* Add inplace variant of complement_1
* Implement inplace bitvecotr not.
* Add inplace variant of rz_bv_and
* Implement inplace variant of rz_bv_or
* Implement inplace variant of rz_bv_xor
* Constify rz_bv_lsb/msb
* Implement inplace variant of rz_bv_neg
* Fix inplace add. Add inplace SUB
* Remove prefix
* Remove invalid const
* Implement in-place casting of bit vectors.
* Add a hash test
* Fix unnecessary &
* Prevent OOB reads & writes by copying only the minimum of bytes.
* Add inplace MUL
* Add ble version for bitvector set/get with bytes.
* Add documentation for inplace bitvector functions.
* Add bench of add/sub() and sub/add_inplace().
* Remove rz_bv_copy_nbits_inplace because it was the same as rz_bv_copy_nbits.
If a packet was pushed out of the cache, it can be decoded as invalid, although it is valid.
Then it is marked as such according to some heuristic.
But the get_pkt_op parameter was not set in this case, which further down let
the plugin return an EMPTY() effect.
This removes the "unimplemented" error message when encountering this particular relocation type. R_AARCH64_TLSDESC is handled by the dynamic linker; we intentionally do very little to handle it.
Co-authored-by: Jared B <JaredB@invalid.invalid>
* Clarify the ownership of the parameters of the function rz_il_value_new_*
* fixup! Clarify the ownership of the parameters of the function rz_il_value_new_*
The cache read must read within the mapped region and not beyond.
Otherwise it would go against the documentation of rz_io_nread_at().
rz_io_cache_read() internally doesn't know about map boundaries so
the length parameter passed to it in rz_io_nread_at()
should only read 'ret' number of bytes.
To give somewhat more introspective what rz_io_cache_read() does,
the return value meaning was changed to success/failure
and an out parameter was added to get the number of bytes read.
Improved `librz/hash/README.md` documentation to accurately reflect API usage, specifically `RzHash` vs `RzHashCfg`. Added a working C example `examples/api/hash/md5.c` demonstrating proper initialization and hashing workflow.