From 0d02532dab06c20a5ea4bed90c2a7f9fbb7eb96d Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Mon, 23 Jun 2025 14:52:28 +0200 Subject: [DYNACACHE] Added support for unaligned addresses --- src/libtools/signals.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/libtools/signals.c') diff --git a/src/libtools/signals.c b/src/libtools/signals.c index 1c8247ec..5d932349 100644 --- a/src/libtools/signals.c +++ b/src/libtools/signals.c @@ -426,6 +426,32 @@ int is_addr_unaligned(uintptr_t addr) } #ifdef DYNAREC +int nUnalignedRange(uintptr_t start, size_t size) +{ + if(!unaligned) + return 0; + int n = 0; + uintptr_t end = start + size -1; + uintptr_t addr; + kh_foreach_key(unaligned, addr, + if(addr>=start && addr<=end) + ++n; + ); + return n; +} +void getUnalignedRange(uintptr_t start, size_t size, uintptr_t addrs[]) +{ + if(!unaligned) + return; + int n = 0; + uintptr_t end = start + size -1; + uintptr_t addr; + kh_foreach_key(unaligned, addr, + if(addr>=start && addr<=end) + addrs[n++] = addr; + ); +} + int mark_db_unaligned(dynablock_t* db, uintptr_t x64pc) { add_unaligned_address(x64pc); -- cgit 1.4.1