diff options
Diffstat (limited to 'dev-util/apitrace/files/apitrace-4.0-multilib.patch')
-rw-r--r-- | dev-util/apitrace/files/apitrace-4.0-multilib.patch | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/dev-util/apitrace/files/apitrace-4.0-multilib.patch b/dev-util/apitrace/files/apitrace-4.0-multilib.patch new file mode 100644 index 000000000000..6ad78c7cde08 --- /dev/null +++ b/dev-util/apitrace/files/apitrace-4.0-multilib.patch @@ -0,0 +1,59 @@ +Upstream commit to find wrappers in lib64 directory. + +commit 3f9c2ecf18d8fa37fad5a7062f80952692eaa8e7 +Author: Alexander Monakov <amonakov@ispras.ru> +Date: Wed Oct 16 20:51:47 2013 +0400 + + cli: use $LIB to handle multilib automagically on glibc + +--- apitrace/cli/CMakeLists.txt ++++ apitrace/cli/CMakeLists.txt +@@ -31,6 +31,7 @@ target_link_libraries (apitrace + ${ZLIB_LIBRARIES} + ${SNAPPY_LIBRARIES} + ${GETOPT_LIBRARIES} ++ dl + ) + + if (NOT CMAKE_CROSSCOMPILING) +--- apitrace/cli/cli_resources.cpp ++++ apitrace/cli/cli_resources.cpp +@@ -32,6 +32,20 @@ + + #include "cli_resources.hpp" + ++#ifdef __GLIBC__ ++ ++#include <dlfcn.h> ++ ++static bool ++tryLib(const os::String &path) ++{ ++ void *handle = dlopen(path.str(), RTLD_LAZY); ++ bool exists = (handle != NULL); ++ if (exists) ++ dlclose(handle); ++ return exists; ++} ++#endif + + os::String + findProgram(const char*programFilename) +@@ -76,6 +90,17 @@ findWrapper(const char *wrapperFilename) + return wrapperPath; + } + ++#ifdef __GLIBC__ ++ // We want to take advantage of $LIB dynamic string token expansion in ++ // glibc dynamic linker to handle multilib layout for us ++ wrapperPath = processDir; ++ wrapperPath.join("../$LIB/apitrace/wrappers"); ++ wrapperPath.join(wrapperFilename); ++ if (tryLib(wrapperPath)) { ++ return wrapperPath; ++ } ++#endif ++ + // Try relative install directory + wrapperPath = processDir; + #if defined(_WIN32) |