diff --git a/engine/platform/android/dlsym-weak.cpp b/engine/platform/android/dlsym-weak.cpp index 42d248d2a6..931ef8b317 100644 --- a/engine/platform/android/dlsym-weak.cpp +++ b/engine/platform/android/dlsym-weak.cpp @@ -119,14 +119,15 @@ static Elf_Sym* dlsym_handle_lookup( soinfo* si, const char* name ) return soinfo_elf_lookup( si, elfhash( name ), name ); } -extern "C" void *ANDROID_LoadLibrary( const char *dllname ); +#include "lib_android.h" + static int dladdr_fallback( const void *addr, Dl_info *info ) { static soinfo *server_info; Elf_Sym *sym; if( !server_info ) - server_info = ( soinfo* )ANDROID_LoadLibrary( "server" ); + server_info = ( soinfo* )ANDROID_GetServerLibrary(); if( !server_info ) return 0; //__android_log_print( ANDROID_LOG_ERROR, "dladdr_fb", "%p %p\n", addr, server_info ); diff --git a/engine/platform/android/lib_android.c b/engine/platform/android/lib_android.c index a8ba10f385..8b9810fad1 100644 --- a/engine/platform/android/lib_android.c +++ b/engine/platform/android/lib_android.c @@ -19,6 +19,12 @@ GNU General Public License for more details. #include "platform/android/lib_android.h" #include "platform/android/dlsym-weak.h" // Android < 5.0 +void *Android_GetServerLibrary( void ) +{ + return svgame.hInstance; +} + + void *ANDROID_LoadLibrary( const char *dllname ) { char path[MAX_SYSPATH]; diff --git a/engine/platform/android/lib_android.h b/engine/platform/android/lib_android.h index 5bead1f332..9e360dd6c8 100644 --- a/engine/platform/android/lib_android.h +++ b/engine/platform/android/lib_android.h @@ -20,6 +20,7 @@ GNU General Public License for more details. #define Platform_POSIX_LoadLibrary( x ) ANDROID_LoadLibrary(( x )) #define Platform_POSIX_GetProcAddress( x, y ) ANDROID_GetProcAddress(( x ), ( y )) +void *Android_GetServerLibrary( void ); void *ANDROID_LoadLibrary( const char *dllname ); void *ANDROID_GetProcAddress( void *hInstance, const char *name );