This is an automated email from the ASF dual-hosted git repository. granthenke pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kudu.git
commit 70f8131423323004b42e70d85308c0fa07753935 Author: Scott Reynolds <[email protected]> AuthorDate: Mon May 27 14:13:48 2019 -0700 KUDU-2770: apply ustat removal patch from llvm Summary: glib's sys/ustat.h has been deprecated for awhile and it has been removed in glibc 2.28: https://lwn.net/Articles/761462/ The LLVM team merged the following into their project: https://reviews.llvm.org/rG383fe5c8668f63ef21c646b43f48da9fa41aa100 and this is a port of that patch. Change-Id: I506f6031f39972bf9b9dbe3368214da2cf390830 Reviewed-on: http://gerrit.cloudera.org:8080/13447 Reviewed-by: Grant Henke <[email protected]> Tested-by: Grant Henke <[email protected]> --- thirdparty/download-thirdparty.sh | 5 +-- thirdparty/patches/llvm-ustat-removal.patch | 56 +++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/thirdparty/download-thirdparty.sh b/thirdparty/download-thirdparty.sh index 30d4ae2..249fc35 100755 --- a/thirdparty/download-thirdparty.sh +++ b/thirdparty/download-thirdparty.sh @@ -317,7 +317,7 @@ fetch_and_patch \ $PYTHON_SOURCE \ $PYTHON_PATCHLEVEL -LLVM_PATCHLEVEL=2 +LLVM_PATCHLEVEL=3 fetch_and_patch \ llvm-${LLVM_VERSION}-iwyu-${IWYU_VERSION}.src.tar.gz \ $LLVM_SOURCE \ @@ -327,7 +327,8 @@ fetch_and_patch \ "patch -p1 < $TP_DIR/patches/llvm-iwyu-nocurses.patch" \ "patch -p1 < $TP_DIR/patches/llvm-iwyu-include-picker.patch" \ "patch -d tools/clang/tools/include-what-you-use -p1 < $TP_DIR/patches/llvm-iwyu-llvm-6-compat.patch" \ - "patch -d projects/compiler-rt -p1 < $TP_DIR/patches/llvm-tsan-disable-trace-switching-after-multithreaded-for.patch" + "patch -d projects/compiler-rt -p1 < $TP_DIR/patches/llvm-tsan-disable-trace-switching-after-multithreaded-for.patch" \ + "patch -d projects -p1 < $TP_DIR/patches/llvm-ustat-removal.patch" LZ4_PATCHLEVEL=1 fetch_and_patch \ diff --git a/thirdparty/patches/llvm-ustat-removal.patch b/thirdparty/patches/llvm-ustat-removal.patch new file mode 100644 index 0000000..ccf621a --- /dev/null +++ b/thirdparty/patches/llvm-ustat-removal.patch @@ -0,0 +1,56 @@ +commit 383fe5c8668f63ef21c646b43f48da9fa41aa100 +Author: Craig Topper <[email protected]> +Date: Thu May 24 17:59:47 2018 +0000 + + sanitizer: Use pre-computed size of struct ustat for Linux + + <sys/ustat.h> has been removed from glibc 2.28 by: + + commit cf2478d53ad7071e84c724a986b56fe17f4f4ca7 + Author: Adhemerval Zanella <[email protected]> + Date: Sun Mar 18 11:28:59 2018 +0800 + + Deprecate ustat syscall interface + This patch uses pre-computed size of struct ustat for Linux to fix + + https://bugs.llvm.org/show_bug.cgi?id=37418 + + Patch by H.J. Lu. + + Differential Revision: https://reviews.llvm.org/D47281 + + llvm-svn: 333213 + +diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +index 94b8f3f627c..936d8186733 100644 +--- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -159,7 +159,6 @@ typedef struct user_fpregs elf_fpregset_t; + # include <sys/procfs.h> + #endif + #include <sys/user.h> +-#include <sys/ustat.h> + #include <linux/cyclades.h> + #include <linux/if_eql.h> + #include <linux/if_plip.h> +@@ -253,7 +252,19 @@ namespace __sanitizer { + #endif // SANITIZER_LINUX || SANITIZER_FREEBSD + + #if SANITIZER_LINUX && !SANITIZER_ANDROID +- unsigned struct_ustat_sz = sizeof(struct ustat); ++ // Use pre-computed size of struct ustat to avoid <sys/ustat.h> which ++ // has been removed from glibc 2.28. ++#if defined(__aarch64__) || defined(__s390x__) || defined (__mips64) \ ++ || defined(__powerpc64__) || defined(__arch64__) || defined(__sparcv9) \ ++ || defined(__x86_64__) ++#define SIZEOF_STRUCT_USTAT 32 ++#elif defined(__arm__) || defined(__i386__) || defined(__mips__) \ ++ || defined(__powerpc__) || defined(__s390__) ++#define SIZEOF_STRUCT_USTAT 20 ++#else ++#error Unknown size of struct ustat ++#endif ++ unsigned struct_ustat_sz = SIZEOF_STRUCT_USTAT; + unsigned struct_rlimit64_sz = sizeof(struct rlimit64); + unsigned struct_statvfs64_sz = sizeof(struct statvfs64); + #endif // SANITIZER_LINUX && !SANITIZER_ANDROID
