musl-fix.patch (1698B)
1 diff --git a/renderdoc/3rdparty/plthook/plthook_elf.c b/renderdoc/3rdparty/plthook/plthook_elf.c 2 index 612f689d6..907e7f63e 100644 3 --- a/renderdoc/3rdparty/plthook/plthook_elf.c 4 +++ b/renderdoc/3rdparty/plthook/plthook_elf.c 5 @@ -233,7 +233,11 @@ int plthook_open_by_address(plthook_t **plthook_out, void *address) 6 struct link_map *lmap = NULL; 7 8 *plthook_out = NULL; 9 +#ifdef __GLIBC__ 10 if (dladdr1(address, &info, (void**)&lmap, RTLD_DL_LINKMAP) == 0) { 11 +#else 12 + if (dladdr(address, &info) == 0) { 13 +#endif 14 set_errmsg("dladdr error"); 15 return PLTHOOK_FILE_NOT_FOUND; 16 } 17 @@ -243,7 +247,7 @@ int plthook_open_by_address(plthook_t **plthook_out, void *address) 18 19 static int plthook_open_executable(plthook_t **plthook_out) 20 { 21 -#if defined __linux__ 22 +#if defined __linux__ && defined __GLIBC__ 23 return plthook_open_real(plthook_out, _r_debug.r_map); 24 #elif defined __sun 25 const char *auxv_file = "/proc/self/auxv"; 26 diff --git a/renderdoc/os/os_specific.h b/renderdoc/os/os_specific.h 27 index cc9a6b09e..844597450 100644 28 --- a/renderdoc/os/os_specific.h 29 +++ b/renderdoc/os/os_specific.h 30 @@ -31,6 +31,7 @@ 31 32 #pragma once 33 34 +#include <time.h> 35 #include <stdarg.h> 36 #include <stddef.h> 37 #include <stdint.h> 38 diff --git a/renderdoc/os/posix/linux/linux_hook.cpp b/renderdoc/os/posix/linux/linux_hook.cpp 39 index 4989e2865..0acb3ac0b 100644 40 --- a/renderdoc/os/posix/linux/linux_hook.cpp 41 +++ b/renderdoc/os/posix/linux/linux_hook.cpp 42 @@ -36,6 +36,10 @@ 43 #include "plthook/plthook.h" 44 #include "strings/string_utils.h" 45 46 +#ifndef __GLIBC__ 47 +#define RTLD_DEEPBIND 0 48 +#endif 49 + 50 Threading::CriticalSection libLock; 51 52 RDOC_EXTERN_CONFIG(bool, Linux_Debug_PtraceLogging);