This is an automated email from the ASF dual-hosted git repository.
alexey pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kudu.git
The following commit(s) were added to refs/heads/master by this push:
new 75c38d227 [thirdparty] fix TSAN build on Ubuntu 22.04
75c38d227 is described below
commit 75c38d227c687f69935a638946c6408dff876c79
Author: Zoltan Martonka <[email protected]>
AuthorDate: Mon Aug 14 16:10:13 2023 +0200
[thirdparty] fix TSAN build on Ubuntu 22.04
There are 2 things missing from llvm 11:
1. SIGSTKSZ is no longer a constant in the newer glibc, so caching it in a
static variable can result in a crash.
This causes the libunwind build to fail at configure:
"configure: error: cannot run C compiled programs."
The problem is that the conftest.c compile crashes.
Although the problem occurs at libunwind build first, it is an llvm
issue.
More info:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100114
+ "/usr/bin/krb5-config --libs gssapi" brings the config "-flto=auto",
which is ignored by newer clangs (starting from 14.0), but clang 11
still gives an error.
The problem occurs while building curl:
"configure: error: one or more libs available at link-time
are not available run-time"
But the error message is misleading: clang just dies with
unknown option.
See:
https://reviews.llvm.org/D99501
Change-Id: Ib9493a9f7212c26a9cfc1e6a6015340cc5fbfdc5
Reviewed-on: http://gerrit.cloudera.org:8080/20336
Reviewed-by: Alexey Serbin <[email protected]>
Tested-by: Alexey Serbin <[email protected]>
---
thirdparty/download-thirdparty.sh | 6 ++--
...izer-built-against-glibc-2_34-doesnt-work.patch | 39 ++++++++++++++++++++++
thirdparty/patches/llvm-ignore-flto-values.diff | 11 ++++++
3 files changed, 54 insertions(+), 2 deletions(-)
diff --git a/thirdparty/download-thirdparty.sh
b/thirdparty/download-thirdparty.sh
index df591ef9d..d957274e4 100755
--- a/thirdparty/download-thirdparty.sh
+++ b/thirdparty/download-thirdparty.sh
@@ -331,14 +331,16 @@ fetch_and_patch \
$PYTHON_SOURCE \
$PYTHON_PATCHLEVEL
-LLVM_PATCHLEVEL=3
+LLVM_PATCHLEVEL=5
fetch_and_patch \
llvm-${LLVM_VERSION}-iwyu-${IWYU_VERSION}.src.tar.gz \
$LLVM_SOURCE \
$LLVM_PATCHLEVEL \
"patch -p1 < $TP_DIR/patches/llvm-add-iwyu.patch" \
"patch -d projects -p1 <
$TP_DIR/patches/llvm-remove-cyclades-inclusion-in-sanitizer.patch" \
- "patch -p2 < $TP_DIR/patches/llvm-fix-missing-include.patch"
+ "patch -p2 < $TP_DIR/patches/llvm-fix-missing-include.patch" \
+ "patch -d projects -p1 <
$TP_DIR/patches/llvm-Sanitizer-built-against-glibc-2_34-doesnt-work.patch" \
+ "patch -d tools -p1 < $TP_DIR/patches/llvm-ignore-flto-values.diff"
LZ4_PATCHLEVEL=0
fetch_and_patch \
diff --git
a/thirdparty/patches/llvm-Sanitizer-built-against-glibc-2_34-doesnt-work.patch
b/thirdparty/patches/llvm-Sanitizer-built-against-glibc-2_34-doesnt-work.patch
new file mode 100644
index 000000000..c54ab006a
--- /dev/null
+++
b/thirdparty/patches/llvm-Sanitizer-built-against-glibc-2_34-doesnt-work.patch
@@ -0,0 +1,39 @@
+diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cpp
b/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cpp
+index f920172c0..33d85ed75 100644
+--- a/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cpp
++++ b/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cpp
+@@ -169,7 +169,11 @@ bool SupportsColoredOutput(fd_t fd) {
+
+ #if !SANITIZER_GO
+ // TODO(glider): different tools may require different altstack size.
+-static const uptr kAltStackSize = SIGSTKSZ * 4; // SIGSTKSZ is not enough.
++static uptr GetAltStackSize() {
++ // SIGSTKSZ is not enough.
++ const uptr kAltStackSize = SIGSTKSZ * 4;
++ return kAltStackSize;
++}
+
+ void SetAlternateSignalStack() {
+ stack_t altstack, oldstack;
+@@ -180,10 +184,9 @@ void SetAlternateSignalStack() {
+ // TODO(glider): the mapped stack should have the MAP_STACK flag in the
+ // future. It is not required by man 2 sigaltstack now (they're using
+ // malloc()).
+- void* base = MmapOrDie(kAltStackSize, __func__);
+- altstack.ss_sp = (char*) base;
++ altstack.ss_size = GetAltStackSize();
++ altstack.ss_sp = (char *)MmapOrDie(altstack.ss_size, __func__);
+ altstack.ss_flags = 0;
+- altstack.ss_size = kAltStackSize;
+ CHECK_EQ(0, sigaltstack(&altstack, nullptr));
+ }
+
+@@ -191,7 +194,7 @@ void UnsetAlternateSignalStack() {
+ stack_t altstack, oldstack;
+ altstack.ss_sp = nullptr;
+ altstack.ss_flags = SS_DISABLE;
+- altstack.ss_size = kAltStackSize; // Some sane value required on Darwin.
++ altstack.ss_size = GetAltStackSize(); // Some sane value required on
Darwin.
+ CHECK_EQ(0, sigaltstack(&altstack, &oldstack));
+ UnmapOrDie(oldstack.ss_sp, oldstack.ss_size);
+ }
diff --git a/thirdparty/patches/llvm-ignore-flto-values.diff
b/thirdparty/patches/llvm-ignore-flto-values.diff
new file mode 100644
index 000000000..d273b3b19
--- /dev/null
+++ b/thirdparty/patches/llvm-ignore-flto-values.diff
@@ -0,0 +1,11 @@
+--- a/clang/include/clang/Driver/Options.td 2020-10-07 10:10:48.000000000
+0000
++++ b/clang/include/clang/Driver/Options.td 2023-07-27 12:10:37.987953132
+0000
+@@ -1335,6 +1335,8 @@
+ def flimited_precision_EQ : Joined<["-"], "flimited-precision=">,
Group<f_Group>;
+ def fapple_link_rtlib : Flag<["-"], "fapple-link-rtlib">, Group<f_Group>,
+ HelpText<"Force linking the clang builtins runtime library">;
++def : Flag<["-"], "flto=auto">, Group<clang_ignored_gcc_optimization_f_Group>;
++def : Flag<["-"], "flto=jobserver">,
Group<clang_ignored_gcc_optimization_f_Group>;
+ def flto_EQ : Joined<["-"], "flto=">, Flags<[CoreOption, CC1Option]>,
Group<f_Group>,
+ HelpText<"Set LTO mode to either 'full' or 'thin'">, Values<"thin,full">;
+ def flto : Flag<["-"], "flto">, Flags<[CoreOption, CC1Option]>,
Group<f_Group>,