From 394fc0efa0c50bdb995cba26732df77a070a5afa Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Wed, 18 Feb 2015 14:39:54 -0700 Subject: loader: do not set RTLD_DEEPBIND Instead, build layers with -Bsymbolic. This should fix (or hide) a reported crash with overriden malloc()/free(). --- layers/CMakeLists.txt | 1 + loader/loader_platform.h | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/layers/CMakeLists.txt b/layers/CMakeLists.txt index 0655fa03..774574c1 100644 --- a/layers/CMakeLists.txt +++ b/layers/CMakeLists.txt @@ -31,6 +31,7 @@ else() add_library(XGLLayer${target} SHARED ${ARGN}) target_link_Libraries(XGLLayer${target} layer_utils) add_dependencies(XGLLayer${target} generate_xgl_layer_helpers) + set_target_properties(XGLLayer${target} PROPERTIES LINK_FLAGS "-Wl,-Bsymbolic") endmacro() endif() diff --git a/loader/loader_platform.h b/loader/loader_platform.h index 9686b65d..d3fe4d73 100644 --- a/loader/loader_platform.h +++ b/loader/loader_platform.h @@ -71,10 +71,7 @@ typedef void * loader_platform_dl_handle; static inline loader_platform_dl_handle loader_platform_open_library(const char* libPath) { - // NOTE: The prior (Linux only) loader code always used RTLD_LAZY. In one - // place, it used RTLD_DEEPBIND. It probably doesn't hurt to always use - // RTLD_DEEPBIND, and so that is what is being done. - return dlopen(libPath, RTLD_LAZY | RTLD_DEEPBIND | RTLD_LOCAL); + return dlopen(libPath, RTLD_LAZY | RTLD_LOCAL); } static inline char * loader_platform_open_library_error(const char* libPath) { -- cgit v1.2.3