* Add ht benchmarks * Initial implementation * Finalize native per-group lookup support * Lookup SSE2 implementation * Improve hashing * Add support for custom elem_size * Avoid double h2 hashing when reserving slot * Make custom elem_size support conditional * Fix issues with bitwise and default lookup implementations * Implement deletion trick optimization * Track growth_size instead of deleted_slots * Refactor SDB to access ht via API instead of internals * Modify SDB tests which rely on hashtable order * Fix SDB build warnings * Fix bug with finding next power of two * foreach_kv to return a bool result * Change SDB diff order expected by serialize_analysis unit test * Fix bug in the bitwise lookup implementation * Remove second call to rz_core_init() which causes memory leaks * Update some regression tests to accept reordered output * Adapt ht clear to new implementation * Use fini_kv_pair and fix 1 potential leak on malloc failure * Fix cmd/types test after merge * Avoid second call to calsize_key and avoid iter leaks on malloc failure * Improve hash distribution * Extend benchmark suite * Fix bug with string hashing * Branchless write to mirrored ctrl bytes * Simplify string hash and remove potential UB * Move RZ_PREFETCH macro to rz_types.h * Add SSE2 discovery in Meson * Forward SDB string hash function to ht string hash * Try to revert test_cpu_profiles() to avoid relying on a baked SDB file * Revert SDB/CDB hash function change * Fix SDB reference to HT hash function instead of CDB hash * Change calloc to malloc * Avoid storing/checking key_len and key_value if they are ut64 * Improve string hash function * Rename default hash functions * Improve bench code * linter.yml: set clang-path to point to llvm-18
98 lines
No EOL
3 KiB
Text
98 lines
No EOL
3 KiB
Text
NAME=axtj nofunc noflag (#11667)
|
|
FILE=bins/elf/analysis/x86-helloworld-gcc
|
|
CMDS=<<EOF
|
|
e analysis.jmp.cref=true
|
|
aaa
|
|
s 0x804969c
|
|
axl~0x804969c
|
|
axtj~{}
|
|
EOF
|
|
EXPECT=<<EOF
|
|
section..plt+6 0x80482c6 -> CODE -> 0x804969c section..got.plt+8
|
|
[
|
|
{
|
|
"from": 134513350,
|
|
"to": 134518428,
|
|
"type": "CODE"
|
|
}
|
|
]
|
|
EOF
|
|
RUN
|
|
|
|
NAME=axf
|
|
FILE==
|
|
CMDS=<<EOF
|
|
e asm.arch=x86
|
|
e asm.bits=64
|
|
s 0
|
|
ax 0x42
|
|
ax 0x43
|
|
axC 0x44
|
|
f someflag @ 0x43
|
|
axf
|
|
EOF
|
|
EXPECT=<<EOF
|
|
0x42 add byte [rax], al
|
|
0x43 someflag
|
|
C 0x44 add byte [rax], al
|
|
EOF
|
|
RUN
|
|
|
|
NAME=axlj
|
|
FILE=bins/elf/analysis/hello-utf-16
|
|
CMDS=<<EOF
|
|
aa
|
|
s sym.imp.wprintf
|
|
axlj~{[0].to}
|
|
EOF
|
|
EXPECT=<<EOF
|
|
6295544
|
|
EOF
|
|
RUN
|
|
|
|
NAME=axtl
|
|
FILE=bins/elf/vim
|
|
CMDS=<<EOF
|
|
aaa
|
|
axtl @ sym.mf_write
|
|
EOF
|
|
EXPECT=<<EOF
|
|
;------------------------------------------
|
|
void sym.mf_release(unsigned long arg1, int64_t arg2, int64_t arg_28h, int64_t arg_20h, int64_t arg_30h, int64_t arg_498h, int64_t arg_38h, int64_t arg_48h, int64_t arg_40h, int64_t arg_10h);
|
|
; Xref from: sym.mf_release @ 0x00219836
|
|
| : 0x00219830 mov rsi, rbx ; int64_t arg2
|
|
| : 0x00219833 mov rdi, rbp ; int64_t arg1
|
|
| : 0x00219836 call sym.mf_write
|
|
| : 0x0021983b test eax, eax
|
|
| `=< 0x0021983d jz 0x2197b0
|
|
| 0x00219843 mov rax, qword [rbx+0x18]
|
|
;------------------------------------------
|
|
void sym.mf_sync(int64_t arg1, int64_t arg2, int64_t arg_49ch, int64_t arg_10h, int64_t arg_490h);
|
|
; Xref from: sym.mf_sync @ 0x0021a454
|
|
| ; CODE XREF from sym.mf_sync @ 0x21a5c3
|
|
| 0x0021a44e mov rsi, rbx ; int64_t arg2
|
|
| 0x0021a451 mov rdi, rbp ; int64_t arg1
|
|
| 0x0021a454 call sym.mf_write
|
|
| 0x0021a459 test eax, eax
|
|
| ,=< 0x0021a45b jnz 0x21a469
|
|
| | 0x0021a45d test r13d, r13d
|
|
;------------------------------------------
|
|
void sym.mf_sync(int64_t arg1, int64_t arg2, int64_t arg_49ch, int64_t arg_10h, int64_t arg_490h);
|
|
; Xref from: sym.mf_sync @ 0x0021a59d
|
|
| 0x0021a597 mov rdi, rbp ; int64_t arg1
|
|
| 0x0021a59a xor r13d, r13d
|
|
| 0x0021a59d call sym.mf_write
|
|
| 0x0021a5a2 test eax, eax
|
|
| 0x0021a5a4 setnz r13b
|
|
| 0x0021a5a8 test r14d, r14d
|
|
;------------------------------------------
|
|
void sym.mf_release_all(int64_t arg_10h, int64_t arg_28h, int64_t arg_20h, int64_t arg_30h, int64_t arg_498h, int64_t arg_38h, int64_t arg_48h, int64_t arg_40h);
|
|
; Xref from: sym.mf_release_all @ 0x0021a756
|
|
| : 0x0021a750 mov rsi, rbx ; int64_t arg2
|
|
| : 0x0021a753 mov rdi, rbp ; int64_t arg1
|
|
| : 0x0021a756 call sym.mf_write
|
|
| : 0x0021a75b test eax, eax
|
|
| `=< 0x0021a75d jz 0x21a726
|
|
| 0x0021a75f mov rax, qword [rbx+0x18]
|
|
EOF
|
|
RUN |