23 const char*
resolve_symbol(uintptr_t rip, uintptr_t link_base, uintptr_t load_base) {
26 if(KERNEL_SYMBOLS_COUNT == 0)
31 if(load_base >= link_base)
32 offset = load_base - link_base;
35 uintptr_t adjusted_address = rip;
37 adjusted_address = rip - offset;
41 size_t right = KERNEL_SYMBOLS_COUNT;
43 size_t middle = (left + right) >> 1;
44 if(kernel_symbols[middle].address <= adjusted_address)
50 return left == 0 ? nullptr : kernel_symbols[left - 1].name;
const char * resolve_symbol(uintptr_t rip, uintptr_t link_base, uintptr_t load_base)
resolve an instruction pointer (rip) to a symbol name and optional offset.