Commit graph

29115 commits

Author SHA1 Message Date
pelijah
11cb44af98
Remove ht_pp.h include from rz_list.h (#4441) 2024-04-18 13:39:49 +03:00
Florian Märkl
2cacf880c1
Add missing newlines to some RZ_LOG_* calls (#4439) 2024-04-18 00:04:38 +08:00
Khairul Azhar Kasmiran
c5b20a8df8
Use Python venv on OpenBSD (#4437)
* Use Python venv on OpenBSD

* Activate venv after setting PATH
2024-04-16 23:43:20 +08:00
pelijah
f2d8e0db3d
Add HtSP, HtSS, HtSU, SetS (#4415)
- All `ht_*_new0()` are removed
- `freefn` field of HT options was renamed to `finiKV`
- `finiKV_user` fields was added to HT options
- Added `ht_*_new_opt_size` API
- `HtSP` and `HtUP` are created with `ValueFree` callback  that allows to reduce extra LOC and prevent bugs
- `SetP` replaced with `SetS` (based on `HtSP`)
- `rz_th_ht_*_new0()` and `rz_th_ht_*_new_opt()` are replaced with `rz_th_ht_*_new(HtXX *)`
2024-04-16 20:27:48 +08:00
Aditya Maheshwari
c5d2e3f132
Add mention of str.search.* variables in the help of iz and izz (#4433) 2024-04-16 14:23:38 +08:00
Khairul Azhar Kasmiran
36ce78bc38
.(: Don't unwrap quoted args (#4417) 2024-04-15 18:32:12 +08:00
Khairul Azhar Kasmiran
73d85d270a
rz_cmd_desc_get_arg: Remove unused cmd param (#4427) 2024-04-11 17:57:18 +08:00
Khairul Azhar Kasmiran
d5f6f8f82f
Use xz-5.2.9.tar.gz instead due to Debian builds (#4424) 2024-04-10 01:02:28 +08:00
Florian Märkl
149453bd51 Fix debugger build on Mac OS X 10.5/x86
Some more APIs were incorrectly checked for with __POWERPC__, even
though they have nothing to do with the architecture, but were only
introduced in Mac OS X 10.6.
2024-04-09 10:54:12 +02:00
Florian Märkl
505893bdce Fix debugger build on Mac OS X 10.5/ppc
Debugging itself is still not working, but now it does not prevent a successful
build for static analysis.
2024-04-09 10:54:12 +02:00
Florian Märkl
c23fdd90f0 Replace strnlen call
Non-C-standard strnlen is not available on Mac OS X 10.5
2024-04-09 10:54:12 +02:00
Florian Märkl
4f1a307bc1 Fix condition for posix_spawn in io_debug (Fix #4352)
The relevant flag we want to use with posix_spawn is
POSIX_SPAWN_CLOEXEC_DEFAULT, for which checking for __POWERPC__ made no
sense. This caused build failures on Mac OS X 10.6 and potential kernel
panics on 10.7.
2024-04-09 10:54:12 +02:00
pelijah
6280243ff2
ELF: skip visited segments in compute_symbols_from_segment() (#4410) 2024-04-07 14:22:21 +08:00
Dhruv Maroo
c6537d917e
Fix EXEC_WITH_RMODE macro and make the IL generated more concise (#4413)
* Use local variables in methods using `EXEC_WITH_RMODE` instead of
      `DUP`ing the values. Do the same for ST register stack popping.
      This leads to lesser code in the IL since the same long expression
      does not get repeated in the IL everytime (since we don't `DUP`
      anymore).
2024-04-05 08:30:35 +08:00
pelijah
de75daca14
Fix memleak in x86.nz asm plugin (#4416) 2024-04-05 08:29:49 +08:00
Florian Märkl
eeda6b1b59 Remove RzFlag.base
The only place where this field was set to a non-zero value was the now
removed fb command, and it was never used for anything sensible. Thus it
is safe to remove.
2024-04-04 13:22:57 +02:00
Florian Märkl
f223247b46 Remove fb command
The fb command can modify the offset of a flag, but does not update the
skiplist they are stored in, leading to a corrupted flag database. This
can be seen for example when executing
f test @ 0x4; fb 0x10 test; fl; pd 0x8 @ 0
2024-04-04 13:22:57 +02:00
Florian Märkl
c7f670296f Add missing tests for 15->16 migration 2024-04-04 13:22:57 +02:00
Khairul Azhar Kasmiran
0f29d0074f
rzshell_which.py: Ignore FAKE and INNER entries (#4412)
Co-authored-by: Riccardo Schirone <562321+ret2libc@users.noreply.github.com>
2024-04-03 18:09:39 +08:00
pelijah
3d93397dd8
RzIL: replace float comparison macros with functions (#4400)
* Replace float comparison macros with functions
* Move to float operations into il_routines.c
* Add RZ_OWN/RZ_BORROW tags
2024-04-02 09:18:21 +08:00
Giovanni
5cd4cff7eb
Update libdemangle to latest main and add LD command as alias of iDl (#4411) 2024-04-01 14:39:35 +08:00
billow
8f7f03cff6
TriCore IL: fix CSUB/CSUBN (#4409) 2024-04-01 07:45:33 +08:00
pelijah
9a27c4fe6e
Fix memleak in define_cast_from_value macro (#4407) 2024-03-31 12:05:29 +08:00
Khairul Azhar Kasmiran
754538fd8a
Fix unescaping of \\ esc seq (#4402) 2024-03-31 11:48:15 +08:00
pelijah
6c05989f19
Close capstone handle in m68k plugin dtor (#4408) 2024-03-31 08:30:54 +08:00
Khairul Azhar Kasmiran
d9d066a377
Use fallback repo for xz 5.2.9 (#4403)
* Downgrade to xz 5.2.9
* Patch xz-5.2.9's src/common/tuklib_integer.h
2024-03-30 21:47:49 +08:00
pelijah
8fec79ab61
Fix leaked HtPP keys (#4398) 2024-03-29 11:32:38 +08:00
Anton Kochkov
667da7ece8 subprojects/spp: remove dead code 2024-03-28 07:41:59 +08:00
Anton Kochkov
bfe5e3b806 subprojects/spp: update README and code 2024-03-28 07:41:59 +08:00
Anton Kochkov
e2d42d2004 subprojects/spp: remove acr and pod preprocessors 2024-03-28 07:41:59 +08:00
Anton Kochkov
89f37e3881 subprojects/spp: use meson configuration 2024-03-28 07:41:59 +08:00
Anton Kochkov
01f125fdc9 subprojects/spp: remove unused files 2024-03-28 07:41:59 +08:00
Khairul Azhar Kasmiran
cfac4b2ae1
strings_print json: For efficiency, escape strings only once (#4396) 2024-03-28 01:05:15 +08:00
Khairul Azhar Kasmiran
508bbae8a5
izj/izzj: Fix escaping of special chars (#4392) 2024-03-26 22:52:06 +08:00
pelijah
576d4b8a5e
Fix several memleaks in DWARF related code (#4391) 2024-03-26 22:11:08 +08:00
Giovanni
d6d54be717
go: remove invalidate any string with a colon (#4389) 2024-03-25 22:09:45 +08:00
Rot127
efd5f2532d
Add note to not use rz_time_now() for timestamps. (#4388) 2024-03-25 19:20:25 +08:00
Rot127
b4fe418375
Fix broken CI (#4376)
* Increase timeout for OpenBSD

* Reset all members of a packet.

* Replace calloc with Rizin macros

* Add returns after fatal logs

* Init time structs with 0.

* Use monotonic clock to set last access timestamps.

Because instruction packets get pushed out of the buffer based in their last access,
using the real-time clock leads to problems. On Windows the real time clock seems to
not always give ascending values with multiple calls
(real-time clock = best bet of machine of current day time, which can fluctuate).

Using the monotonic clock will always give strictly ascending timestamps.

Due to the use of the real-clock, the instruction packets got
sometimes pushed out of the buffer non-deterministically.
2024-03-25 19:15:56 +08:00
Rot127
1228d4dc58
Add all supported architectures to the labeler (#4381)
* Add labeling for all missing architectures
2024-03-25 19:07:42 +08:00
wargio
7906b0cd90 cleanup formatting on rz_vector.h 2024-03-25 18:36:02 +08:00
wargio
dd231554be remove useless if from rtti-itanium code
sss
2024-03-25 18:36:02 +08:00
wargio
c53b053b61 Remove useless semicolon 2024-03-25 18:36:02 +08:00
z3phyr
39278ab891
debug: Android doesn't have gs_base (#4384)
Co-authored-by: Giridhar Prasath R <giridh1337@gmail.com>
2024-03-25 07:45:50 +08:00
Anton Kochkov
957a2997b3
debug: i386 register profile lacks gs_base (#4382) 2024-03-24 12:18:13 +08:00
Anton Kochkov
fb5bc404b6
debug: i386 register profile lacks gs_base (#4380) 2024-03-23 12:58:25 +08:00
Khairul Azhar Kasmiran
c52750ccfe
$: Use rz_flag_get to check if flag exists (#4377) 2024-03-22 22:12:20 +08:00
z3phyr
ab593b3c7e
Make TLS detection only X86-specific (#4378) 2024-03-22 21:37:39 +08:00
Rot127
fb6efca4b5
[Hexagon] RzIL uplifiting (#3837)
Uplift Hexagon architecture to RzIL

The general structure is, that every (sub-)instruction has a getter for it's RzIL code.
Calling the getter will return the RzIL operation.
If RzIL for an instruction is requested, the plugin makes a decision. Because Hexagon only executes whole instruction packets. If the instruction is not the last instruction in a packet, it will simply return `EMPTY()`. If the RzIL for the last instruction in a packet is requested, it will get the RzIL operations for all instructions in the packet, shuffles them into the correct execution order (according to some rules) and returns the complete operation for the packet.

The RzIL code was entirely generated with the [rzil-compiler](https://github.com/Rot127/rzil-compiler/), using the semantic definition of the [QEMU Hexagon module](https://github.com/qemu/qemu/tree/master/target/hexagon).

Currently successful compile instructions (and tested):
```
[*] 1581/1733 standard instructions compiled.
[*] 431/643 HVX instructions compiled.
[*] In total: 2012/2376 instructions compiled.
```

It was tested with:
- (Semantic tests) `rz-tracetest` against the execution trace of the QEMU Hexagon test binaries.
- (Bug free and semi-semtantic test) Adding tests which simply execute the test binaries to ensure leak and segfault free execution. Also it is executed until a certain instruction is reached (end of `main` or `loc.pass` symbol), partially testing it executes correctly.

For the uplifting several changes and modernization had to be made:

- Enhance consistency of decoding
  - Allow to disassemble an instruction without copying the result. This is used if the given buffer of instruction bytes is larger than one instruction width. In this case, as many instructions as the buffer can hold are disassembled and buffered for later.
  - Generally enhance buffering of instructions.
  - Allow to mark a packet as valid before it is completely decoded (in case we know it must be valid, e.g. if it is a jump target of a valid packet).
- Fix (hopefully) all memory leaks of the Hexagon plugin.
- Changes to register getters, because RzIL needs finer control to translate alias or explicit register names to their real register.
  - Getter for register name is now done by table, so for future distinction between DSP version we can just select another table.
  - Translation functions from register alias or explicit name to their real register.
  - Each operand contains now it's variable ID (e.g. `d` for register `Rd`) as in the ISA (for mapping in the RzIL code).
- Ease debugging by tracking in more precision, if an instruction is added to a stale, active or new packet.
- Add registers `C20` - `C29` (not yet present in LLVM)
- Some renaming to make the code more readable.
2024-03-22 07:24:56 +00:00
z3phyr
de4a3c7419
Enhance dmht tcache command (#4355)
- Add tcache heap heuristics
- Fetch glibc version from libc
- Add unit testcases for glibc version

Co-authored-by: Giridhar Prasath R <giridh1337@gmail.com>
2024-03-22 11:00:58 +08:00
Rot127
e3c06ac3bb
Add free function for parse parameters. (#4374) 2024-03-22 08:59:15 +08:00