diff options
author | Riteo <riteo@posteo.net> | 2023-01-21 16:14:33 +0100 |
---|---|---|
committer | Riteo <riteo@posteo.net> | 2023-01-21 17:59:52 +0100 |
commit | 2a6ce37910ac9765c36cbcc3a0a09916da4debe3 (patch) | |
tree | b4f68e94c99a70da40cc1ffb1fad77440f3e04ef /platform/linuxbsd | |
parent | 621e32971edc27bd1c2f3528534423a5a805d8e7 (diff) |
Make PIE relocation detection glibc-only
Musl doesn't compile with it, and by looking online I think that this is
a glibc only thing.
Diffstat (limited to 'platform/linuxbsd')
-rw-r--r-- | platform/linuxbsd/crash_handler_linuxbsd.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/platform/linuxbsd/crash_handler_linuxbsd.cpp b/platform/linuxbsd/crash_handler_linuxbsd.cpp index 8d03e3d31c..3a245460b4 100644 --- a/platform/linuxbsd/crash_handler_linuxbsd.cpp +++ b/platform/linuxbsd/crash_handler_linuxbsd.cpp @@ -81,7 +81,13 @@ static void handle_crash(int sig) { print_error(vformat("Dumping the backtrace. %s", msg)); char **strings = backtrace_symbols(bt_buffer, size); // PIE executable relocation, zero for non-PIE executables +#ifdef __GLIBC__ + // This is a glibc only thing apparently. uintptr_t relocation = _r_debug.r_map->l_addr; +#else + // Non glibc systems apparently don't give PIE relocation info. + uintptr_t relocation = 0; +#endif //__GLIBC__ if (strings) { List<String> args; for (size_t i = 0; i < size; i++) { |