Skip to content

Commit

Permalink
On Linux, favor local symbols when loading a shared library
Browse files Browse the repository at this point in the history
  • Loading branch information
dsnopek committed Oct 7, 2023
1 parent d31794c commit 7f4e700
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion drivers/unix/os_unix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@
#include <time.h>
#include <unistd.h>

#ifndef RTLD_DEEPBIND
#define RTLD_DEEPBIND 0
#endif

#if defined(MACOS_ENABLED) || (defined(__ANDROID_API__) && __ANDROID_API__ >= 28)
// Random location for getentropy. Fitting.
#include <sys/random.h>
Expand Down Expand Up @@ -646,7 +650,7 @@ Error OS_Unix::open_dynamic_library(const String p_path, void *&p_library_handle
path = get_executable_path().get_base_dir().path_join("../lib").path_join(p_path.get_file());
}

p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW);
p_library_handle = dlopen(path.utf8().get_data(), RTLD_NOW | RTLD_DEEPBIND);
ERR_FAIL_NULL_V_MSG(p_library_handle, ERR_CANT_OPEN, vformat("Can't open dynamic library: %s. Error: %s.", p_path, dlerror()));

if (r_resolved_path != nullptr) {
Expand Down

0 comments on commit 7f4e700

Please sign in to comment.