llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-compiler-rt-sanitizer Author: Vitaly Buka (vitalybuka) <details> <summary>Changes</summary> `gnu_get_libc_version` unlike `confstr` is not intercepted. We should be able to use this function earier. Looks like we use `confstr` staring from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60038 but there is no specific reason to refer it over `gnu_get_libc_version`. --- Full diff: https://github.com/llvm/llvm-project/pull/108724.diff 1 Files Affected: - (modified) compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp (+8-10) ``````````diff diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp index 071ecc4516e0f0..bc3a41bba03fc1 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp +++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp @@ -40,6 +40,10 @@ # include <sys/resource.h> # include <syslog.h> +# ifdef SANITIZER_GLIBC +# include <gnu/libc-version.h> +# endif + # if !defined(ElfW) # define ElfW(type) Elf_##type # endif @@ -198,17 +202,11 @@ bool SetEnv(const char *name, const char *value) { __attribute__((unused)) static bool GetLibcVersion(int *major, int *minor, int *patch) { -# ifdef _CS_GNU_LIBC_VERSION - char buf[64]; - uptr len = confstr(_CS_GNU_LIBC_VERSION, buf, sizeof(buf)); - if (len >= sizeof(buf)) - return false; - buf[len] = 0; - static const char kGLibC[] = "glibc "; - if (internal_strncmp(buf, kGLibC, sizeof(kGLibC) - 1) != 0) - return false; - const char *p = buf + sizeof(kGLibC) - 1; +# ifdef SANITIZER_GLIBC + const char *p = gnu_get_libc_version(); *major = internal_simple_strtoll(p, &p, 10); + // Caller do not expect anything else. + CHECK_EQ(*major, 2); *minor = (*p == '.') ? internal_simple_strtoll(p + 1, &p, 10) : 0; *patch = (*p == '.') ? internal_simple_strtoll(p + 1, &p, 10) : 0; return true; `````````` </details> https://github.com/llvm/llvm-project/pull/108724 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits