* 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
85 lines
No EOL
1.5 KiB
Text
85 lines
No EOL
1.5 KiB
Text
NAME=cxx virtual xrefs simple (x86-64)
|
|
FILE=bins/elf/analysis/x86-class-C
|
|
CMDS=<<EOF
|
|
aaaa
|
|
avD @ main
|
|
avx method.C.print
|
|
EOF
|
|
EXPECT=<<EOF
|
|
Virtual xrefs to method.C.print
|
|
C 0x004008c5 call rdx
|
|
EOF
|
|
RUN
|
|
|
|
NAME=cxx virtual xrefs multiple (arm64)
|
|
FILE=bins/mach0/arm64-class-conditional
|
|
CMDS=<<EOF
|
|
aaaa
|
|
avD @ main
|
|
avx method.Dog.run
|
|
EOF
|
|
EXPECT=<<EOF
|
|
Virtual xrefs to method.Dog.run
|
|
C 0x10000289c blr x8
|
|
C 0x100002958 blr x8
|
|
C 0x10000290c blr x8
|
|
EOF
|
|
RUN
|
|
|
|
|
|
NAME=cxx virtual xrefs multiple with table output (arm64)
|
|
FILE=bins/mach0/arm64-class-conditional
|
|
CMDS=<<EOF
|
|
aaaa
|
|
avD @ main
|
|
avxt method.Dog.run
|
|
EOF
|
|
EXPECT=<<EOF
|
|
from
|
|
------------
|
|
0x10000289c
|
|
0x100002958
|
|
0x10000290c
|
|
EOF
|
|
RUN
|
|
|
|
NAME=objc message dispatch (amd64)
|
|
FILE=bins/mach0/objc-employee
|
|
CMDS=<<EOF
|
|
aaaa
|
|
avD @ main
|
|
avx method_Employee_sayHello
|
|
avxt method_Employee_sayHello
|
|
EOF
|
|
EXPECT=<<EOF
|
|
Virtual xrefs to method_Employee_sayHello
|
|
C 0x100001937 call qword [reloc.objc_msgSend]
|
|
C 0x100001914 call qword [reloc.objc_msgSend]
|
|
from
|
|
------------
|
|
0x100001937
|
|
0x100001914
|
|
EOF
|
|
RUN
|
|
|
|
NAME=objc msg dispatch (arm64)
|
|
FILE=bins/mach0/objc-employee-ios14-arm64e
|
|
CMDS=<<EOF
|
|
aaaa
|
|
avD @ main
|
|
avx method_Employee_base
|
|
avx method_Employee_sayHello
|
|
avxt method_Employee_sayHello
|
|
EOF
|
|
EXPECT=<<EOF
|
|
Virtual xrefs to method_Employee_base
|
|
C 0x100007804 bl sym.imp.objc_msgSend
|
|
Virtual xrefs to method_Employee_sayHello
|
|
C 0x1000077d4 bl sym.imp.objc_msgSend
|
|
C 0x1000077c0 bl sym.imp.objc_msgSend
|
|
from
|
|
------------
|
|
0x1000077d4
|
|
0x1000077c0
|
|
EOF
|
|
RUN |