| 83 | } |
| 84 | |
| 85 | static void *get_base_address(const void *rladdr) |
| 86 | { |
| 87 | #if OS_WIN |
| 88 | HMODULE module; |
| 89 | DWORD flags = GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT; |
| 90 | if (GetModuleHandleExA(flags, (LPCSTR)rladdr, &module)) |
| 91 | { |
| 92 | return (void *)module; |
| 93 | } |
| 94 | #elif OS_MAC |
| 95 | Dl_info info; |
| 96 | if (dladdr(rladdr, &info)) |
| 97 | { |
| 98 | return info.dli_fbase; |
| 99 | } |
| 100 | #endif |
| 101 | return nullptr; |
| 102 | } |
| 103 | |
| 104 | static size_t get_lib_size(void *base_address) |
| 105 | { |