This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch dev-1.1.2 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/dev-1.1.2 by this push: new eb0756c401 [thirdparty](brpc) fix _dl_sym undefined reference on Ubuntu22.04 (#11643) eb0756c401 is described below commit eb0756c401768adcb910e967a6ed78750ee5d5bd Author: Dongyang Li <hello_step...@qq.com> AuthorDate: Wed Aug 10 19:23:10 2022 +0800 [thirdparty](brpc) fix _dl_sym undefined reference on Ubuntu22.04 (#11643) Co-authored-by: qcloud <ubuntu@localhost.localdomain> --- thirdparty/download-thirdparty.sh | 13 ++++++++++++- thirdparty/patches/brpc-1.1.0-_dl_sym.patch | 28 ++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/thirdparty/download-thirdparty.sh b/thirdparty/download-thirdparty.sh index c9d82949a3..b236a64e34 100755 --- a/thirdparty/download-thirdparty.sh +++ b/thirdparty/download-thirdparty.sh @@ -349,4 +349,15 @@ fi cd - echo "Finished patching $AWS_SDK_SOURCE" - +cd "${TP_SOURCE_DIR}/${BRPC_SOURCE}" +if [[ ! -f $PATCHED_MARK ]]; then + if [[ "$(uname -s)" == 'Darwin' ]]; then + patch -p1 <"${TP_PATCH_DIR}/brpc-1.1.0.patch" + touch ${PATCHED_MARK} + else + patch -p0 <"$TP_PATCH_DIR/brpc-1.1.0-_dl_sym.patch" + touch ${PATCHED_MARK} + fi +fi +cd - +echo "Finished patching ${BRPC_SOURCE}" diff --git a/thirdparty/patches/brpc-1.1.0-_dl_sym.patch b/thirdparty/patches/brpc-1.1.0-_dl_sym.patch new file mode 100644 index 0000000000..35d06b7708 --- /dev/null +++ b/thirdparty/patches/brpc-1.1.0-_dl_sym.patch @@ -0,0 +1,28 @@ +--- src/bthread/mutex.cpp 2022-08-10 13:14:11.792739916 +0800 ++++ src/bthread/mutex.cpp 2022-08-10 13:04:54.644764937 +0800 +@@ -44,7 +44,7 @@ + #include "bthread/log.h" + + extern "C" { +-extern void* _dl_sym(void* handle, const char* symbol, void* caller); ++extern void* __attribute__((weak)) _dl_sym(void* handle, const char* symbol, void* caller); + } + + namespace bthread { +@@ -408,8 +408,14 @@ static void init_sys_mutex_lock() { + #if defined(OS_LINUX) + // TODO: may need dlvsym when GLIBC has multiple versions of a same symbol. + // http://blog.fesnel.com/blog/2009/08/25/preloading-with-multiple-symbol-versions +- sys_pthread_mutex_lock = (MutexOp)_dl_sym(RTLD_NEXT, "pthread_mutex_lock", (void*)init_sys_mutex_lock); +- sys_pthread_mutex_unlock = (MutexOp)_dl_sym(RTLD_NEXT, "pthread_mutex_unlock", (void*)init_sys_mutex_lock); ++ if (_dl_sym) { ++ sys_pthread_mutex_lock = (MutexOp)_dl_sym(RTLD_NEXT, "pthread_mutex_lock", (void*)init_sys_mutex_lock); ++ sys_pthread_mutex_unlock = (MutexOp)_dl_sym(RTLD_NEXT, "pthread_mutex_unlock", (void*)init_sys_mutex_lock); ++ } else { ++ // _dl_sym may be undefined reference in some system, fallback to dlsym ++ sys_pthread_mutex_lock = (MutexOp)dlsym(RTLD_NEXT, "pthread_mutex_lock"); ++ sys_pthread_mutex_unlock = (MutexOp)dlsym(RTLD_NEXT, "pthread_mutex_unlock"); ++ } + #elif defined(OS_MACOSX) + // TODO: look workaround for dlsym on mac + sys_pthread_mutex_lock = (MutexOp)dlsym(RTLD_NEXT, "pthread_mutex_lock"); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org