From 4f3062b90b12f3e031a1c949c50a79e0d13de485 Mon Sep 17 00:00:00 2001 From: bart Date: Sat, 13 Sep 2014 10:53:00 +0000 Subject: [PATCH] configure.ac: Generalize glibc version check git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14530 a5019735-40e9-0310-863c-91ae7b9d1cf9 Signed-off-by: Peter Korsgaard --- configure.ac | 139 +++++++--------------------------------------------- coregrind/m_redir.c | 11 ++--- 2 files changed, 22 insertions(+), 128 deletions(-) diff --git a/configure.ac b/configure.ac index ba11ec6..863cd7e 100644 --- a/configure.ac +++ b/configure.ac @@ -875,141 +875,41 @@ AC_EGREP_CPP([BIONIC_LIBC], [ GLIBC_VERSION="bionic") -AC_MSG_CHECKING([the GLIBC_VERSION version]) +AC_MSG_CHECKING([the glibc version]) case "${GLIBC_VERSION}" in 2.2) - AC_MSG_RESULT(2.2 family) - AC_DEFINE([GLIBC_2_2], 1, [Define to 1 if you're using glibc 2.2.x]) + AC_MSG_RESULT(${GLIBC_VERSION} family) DEFAULT_SUPP="glibc-2.2.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.2-LinuxThreads-helgrind.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" ;; - - 2.3) - AC_MSG_RESULT(2.3 family) - AC_DEFINE([GLIBC_2_3], 1, [Define to 1 if you're using glibc 2.3.x]) - DEFAULT_SUPP="glibc-2.3.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - - 2.4) - AC_MSG_RESULT(2.4 family) - AC_DEFINE([GLIBC_2_4], 1, [Define to 1 if you're using glibc 2.4.x]) - DEFAULT_SUPP="glibc-2.4.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - - 2.5) - AC_MSG_RESULT(2.5 family) - AC_DEFINE([GLIBC_2_5], 1, [Define to 1 if you're using glibc 2.5.x]) - DEFAULT_SUPP="glibc-2.5.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.6) - AC_MSG_RESULT(2.6 family) - AC_DEFINE([GLIBC_2_6], 1, [Define to 1 if you're using glibc 2.6.x]) - DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.7) - AC_MSG_RESULT(2.7 family) - AC_DEFINE([GLIBC_2_7], 1, [Define to 1 if you're using glibc 2.7.x]) - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.8) - AC_MSG_RESULT(2.8 family) - AC_DEFINE([GLIBC_2_8], 1, [Define to 1 if you're using glibc 2.8.x]) - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.9) - AC_MSG_RESULT(2.9 family) - AC_DEFINE([GLIBC_2_9], 1, [Define to 1 if you're using glibc 2.9.x]) - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.10) - AC_MSG_RESULT(2.10 family) - AC_DEFINE([GLIBC_2_10], 1, [Define to 1 if you're using glibc 2.10.x]) - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.11) - AC_MSG_RESULT(2.11 family) - AC_DEFINE([GLIBC_2_11], 1, [Define to 1 if you're using glibc 2.11.x]) - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.12) - AC_MSG_RESULT(2.12 family) - AC_DEFINE([GLIBC_2_12], 1, [Define to 1 if you're using glibc 2.12.x]) - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.13) - AC_MSG_RESULT(2.13 family) - AC_DEFINE([GLIBC_2_13], 1, [Define to 1 if you're using glibc 2.13.x]) - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.14) - AC_MSG_RESULT(2.14 family) - AC_DEFINE([GLIBC_2_14], 1, [Define to 1 if you're using glibc 2.14.x]) - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" + 2.[[3-6]]) + AC_MSG_RESULT(${GLIBC_VERSION} family) + DEFAULT_SUPP="glibc-${GLIBC_VERSION}.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" ;; - 2.15) - AC_MSG_RESULT(2.15 family) - AC_DEFINE([GLIBC_2_15], 1, [Define to 1 if you're using glibc 2.15.x]) + 2.[[7-9]]) + AC_MSG_RESULT(${GLIBC_VERSION} family) DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" ;; - 2.16) - AC_MSG_RESULT(2.16 family) - AC_DEFINE([GLIBC_2_16], 1, [Define to 1 if you're using glibc 2.16.x]) + 2.10|2.11) + AC_MSG_RESULT(${GLIBC_VERSION} family) + AC_DEFINE([GLIBC_MANDATORY_STRLEN_REDIRECT], 1, + [Define to 1 if strlen() has been optimized heavily (amd64 glibc >= 2.10)]) DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" ;; - 2.17) - AC_MSG_RESULT(2.17 family) - AC_DEFINE([GLIBC_2_17], 1, [Define to 1 if you're using glibc 2.17.x]) - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.18) - AC_MSG_RESULT(2.18 family) - AC_DEFINE([GLIBC_2_18], 1, [Define to 1 if you're using glibc 2.18.x]) - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.19) - AC_MSG_RESULT(2.19 family) - AC_DEFINE([GLIBC_2_19], 1, [Define to 1 if you're using glibc 2.19.x]) - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" - ;; - 2.20) - AC_MSG_RESULT(2.20 family) - AC_DEFINE([GLIBC_2_20], 1, [Define to 1 if you're using glibc 2.20.x]) + 2.*) + AC_MSG_RESULT(${GLIBC_VERSION} family) + AC_DEFINE([GLIBC_MANDATORY_STRLEN_REDIRECT], 1, + [Define to 1 if strlen() has been optimized heavily (amd64 glibc >= 2.10)]) + AC_DEFINE([GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT], 1, + [Define to 1 if index() and strlen() have been optimized heavily (x86 glibc >= 2.12)]) DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" @@ -1024,10 +924,9 @@ case "${GLIBC_VERSION}" in AC_DEFINE([BIONIC_LIBC], 1, [Define to 1 if you're using Bionic]) DEFAULT_SUPP="bionic.supp ${DEFAULT_SUPP}" ;; - - *) + 2.0|2.1|*) AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}]) - AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.19]) + AC_MSG_ERROR([Valgrind requires glibc version 2.2 or later]) AC_MSG_ERROR([or Darwin or Bionic libc]) ;; esac diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c index 9d3c9b1..9aee707 100644 --- a/coregrind/m_redir.c +++ b/coregrind/m_redir.c @@ -53,7 +53,7 @@ #include "pub_core_demangle.h" // VG_(maybe_Z_demangle) #include "pub_core_libcproc.h" // VG_(libdir) -#include "config.h" /* GLIBC_2_* */ +#include "config.h" /* GLIBC_MANDATORY_*_REDIRECT */ /* This module is a critical part of the redirection/intercept system. @@ -1242,10 +1242,7 @@ void VG_(redir_initialise) ( void ) start, otherwise ld.so (glibc-2.3.5) makes a lot of noise. */ if (0==VG_(strcmp)("Memcheck", VG_(details).name)) { const HChar** mandatory; -# if defined(GLIBC_2_2) || defined(GLIBC_2_3) || defined(GLIBC_2_4) \ - || defined(GLIBC_2_5) || defined(GLIBC_2_6) || defined(GLIBC_2_7) \ - || defined(GLIBC_2_8) || defined(GLIBC_2_9) \ - || defined(GLIBC_2_10) || defined(GLIBC_2_11) +# ifndef GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT mandatory = NULL; # else /* for glibc-2.12 and later, this is mandatory - can't sanely @@ -1282,9 +1279,7 @@ void VG_(redir_initialise) ( void ) add_hardwired_spec( "ld-linux-x86-64.so.2", "strlen", (Addr)&VG_(amd64_linux_REDIR_FOR_strlen), -# if defined(GLIBC_2_2) || defined(GLIBC_2_3) || defined(GLIBC_2_4) \ - || defined(GLIBC_2_5) || defined(GLIBC_2_6) || defined(GLIBC_2_7) \ - || defined(GLIBC_2_8) || defined(GLIBC_2_9) +# ifndef GLIBC_MANDATORY_STRLEN_REDIRECT NULL # else /* for glibc-2.10 and later, this is mandatory - can't sanely -- 2.1.4