diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-10-10 12:33:06 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-10-10 12:33:06 +0200 |
commit | 49495293c723d0e9dcc5d263cbeb1c898401a0a8 (patch) | |
tree | 382a79fc79c476322e4cd5745bc53d7ab2ef1fa9 /drivers/unix/os_unix.cpp | |
parent | b931a6e5ce9897b5716923680dc1c6618312ab3e (diff) | |
parent | 7f4e700bf7e207afae076451ae5c5dcbb112109a (diff) | |
download | redot-engine-49495293c723d0e9dcc5d263cbeb1c898401a0a8.tar.gz |
Merge pull request #82973 from dsnopek/gdextension-linux-favor-local-symbols
On Linux, favor local symbols when loading a shared library
Diffstat (limited to 'drivers/unix/os_unix.cpp')
-rw-r--r-- | drivers/unix/os_unix.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index 4d9549c5a6..581daaca05 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -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> @@ -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) { |