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 <[email protected]>
AuthorDate: Wed Aug 10 19:23:10 2022 +0800
[thirdparty](brpc) fix _dl_sym undefined reference on Ubuntu22.04 (#11643)
Co-authored-by: qcloud <[email protected]>
---
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: [email protected]
For additional commands, e-mail: [email protected]