Add detection for relative dynamic table addresses
This commit is contained in:
14
src/memory.c
14
src/memory.c
@@ -9,15 +9,17 @@ static inline int ptr_in_range(uptr ptr, uptr start, uptr end) {
|
||||
return ptr >= start && ptr <= end;
|
||||
}
|
||||
|
||||
HiloadResult memory_find_pointer(uptr ptr, struct sc_array_memreg* const regions,
|
||||
HiloadResult memory_find_pointer(uptr ptr,
|
||||
struct sc_array_memreg *const regions,
|
||||
size_t *index) {
|
||||
for (size_t i = 0; i < sc_array_size(regions); i++) {
|
||||
if (ptr_in_range(ptr, regions->elems[i].region_start,
|
||||
regions->elems[i].region_end)) {
|
||||
if (index) {
|
||||
uptr start = regions->elems[i].region_start;
|
||||
uptr end = regions->elems[i].region_end;
|
||||
if (ptr_in_range(ptr, start, end)) {
|
||||
if (index)
|
||||
*index = i;
|
||||
return HILOAD_OK;
|
||||
}
|
||||
sc_log_debug("Pointer match (%p) found in index: %u, range: %p - %p\n", ptr, i, start, end);
|
||||
return HILOAD_OK;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user