From f974164bb4dc3950da4daa9d5b9690b01d47e3d9 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Fri, 25 Oct 2019 19:39:04 -0500 Subject: [PATCH] fix loader to have strict ldopen [ROCm/roctracer commit: d2db29cd7d883c9d1a77329423a9c9a279757c3c] --- projects/roctracer/src/core/loader.h | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/projects/roctracer/src/core/loader.h b/projects/roctracer/src/core/loader.h index f2ba57ed9c..fa2b0e62ad 100644 --- a/projects/roctracer/src/core/loader.h +++ b/projects/roctracer/src/core/loader.h @@ -29,12 +29,12 @@ class BaseLoader : public T { return f; } - static inline loader_t& Instance(const bool& preload = false) { + static inline loader_t& Instance() { loader_t* obj = instance_.load(std::memory_order_acquire); if (obj == NULL) { std::lock_guard lck(mutex_); if (instance_.load(std::memory_order_relaxed) == NULL) { - obj = new loader_t(preload); + obj = new loader_t(); instance_.store(obj, std::memory_order_release); } } @@ -45,11 +45,11 @@ class BaseLoader : public T { static void SetLibName(const char *name) { lib_name_ = name; } private: - BaseLoader(bool preload) { - const int flags = (preload) ? RTLD_LAZY : RTLD_LAZY|RTLD_NOLOAD; + BaseLoader() { + const int flags = RTLD_LAZY; handle_ = dlopen(lib_name_, flags); - if ((handle_ == NULL) && (strong_ld_check_)) { - fprintf(stderr, "roctracer: Loading '%s' failed, preload(%d), %s\n", lib_name_, (int)preload, dlerror()); + if (handle_ == NULL) { + fprintf(stderr, "roctracer: Loading '%s' failed, %s\n", lib_name_, dlerror()); abort(); } dlerror(); @@ -64,7 +64,6 @@ class BaseLoader : public T { static mutex_t mutex_; static const char* lib_name_; static std::atomic instance_; - static const bool strong_ld_check_; void* handle_; }; @@ -172,7 +171,6 @@ typedef BaseLoader RocTxLoader; #define LOADER_INSTANTIATE() \ template typename roctracer::BaseLoader::mutex_t roctracer::BaseLoader::mutex_; \ template std::atomic*> roctracer::BaseLoader::instance_{}; \ - template const bool roctracer::BaseLoader::strong_ld_check_ = true; \ template<> const char* roctracer::HipLoader::lib_name_ = "libhip_hcc.so"; \ template<> const char* roctracer::HccLoader::lib_name_ = "libmcwamp_hsa.so"; \ template<> const char* roctracer::KfdLoader::lib_name_ = "libkfdwrapper64.so"; \