0004-configure.ac-Generalize-glibc-version-check.patch 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. From 4f3062b90b12f3e031a1c949c50a79e0d13de485 Mon Sep 17 00:00:00 2001
  2. From: bart <bart@a5019735-40e9-0310-863c-91ae7b9d1cf9>
  3. Date: Sat, 13 Sep 2014 10:53:00 +0000
  4. Subject: [PATCH] configure.ac: Generalize glibc version check
  5. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14530 a5019735-40e9-0310-863c-91ae7b9d1cf9
  6. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
  7. ---
  8. configure.ac | 139 +++++++---------------------------------------------
  9. coregrind/m_redir.c | 11 ++---
  10. 2 files changed, 22 insertions(+), 128 deletions(-)
  11. diff --git a/configure.ac b/configure.ac
  12. index ba11ec6..863cd7e 100644
  13. --- a/configure.ac
  14. +++ b/configure.ac
  15. @@ -875,141 +875,41 @@ AC_EGREP_CPP([BIONIC_LIBC], [
  16. GLIBC_VERSION="bionic")
  17. -AC_MSG_CHECKING([the GLIBC_VERSION version])
  18. +AC_MSG_CHECKING([the glibc version])
  19. case "${GLIBC_VERSION}" in
  20. 2.2)
  21. - AC_MSG_RESULT(2.2 family)
  22. - AC_DEFINE([GLIBC_2_2], 1, [Define to 1 if you're using glibc 2.2.x])
  23. + AC_MSG_RESULT(${GLIBC_VERSION} family)
  24. DEFAULT_SUPP="glibc-2.2.supp ${DEFAULT_SUPP}"
  25. DEFAULT_SUPP="glibc-2.2-LinuxThreads-helgrind.supp ${DEFAULT_SUPP}"
  26. DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  27. ;;
  28. -
  29. - 2.3)
  30. - AC_MSG_RESULT(2.3 family)
  31. - AC_DEFINE([GLIBC_2_3], 1, [Define to 1 if you're using glibc 2.3.x])
  32. - DEFAULT_SUPP="glibc-2.3.supp ${DEFAULT_SUPP}"
  33. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  34. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  35. - ;;
  36. -
  37. - 2.4)
  38. - AC_MSG_RESULT(2.4 family)
  39. - AC_DEFINE([GLIBC_2_4], 1, [Define to 1 if you're using glibc 2.4.x])
  40. - DEFAULT_SUPP="glibc-2.4.supp ${DEFAULT_SUPP}"
  41. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  42. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  43. - ;;
  44. -
  45. - 2.5)
  46. - AC_MSG_RESULT(2.5 family)
  47. - AC_DEFINE([GLIBC_2_5], 1, [Define to 1 if you're using glibc 2.5.x])
  48. - DEFAULT_SUPP="glibc-2.5.supp ${DEFAULT_SUPP}"
  49. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  50. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  51. - ;;
  52. - 2.6)
  53. - AC_MSG_RESULT(2.6 family)
  54. - AC_DEFINE([GLIBC_2_6], 1, [Define to 1 if you're using glibc 2.6.x])
  55. - DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}"
  56. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  57. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  58. - ;;
  59. - 2.7)
  60. - AC_MSG_RESULT(2.7 family)
  61. - AC_DEFINE([GLIBC_2_7], 1, [Define to 1 if you're using glibc 2.7.x])
  62. - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  63. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  64. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  65. - ;;
  66. - 2.8)
  67. - AC_MSG_RESULT(2.8 family)
  68. - AC_DEFINE([GLIBC_2_8], 1, [Define to 1 if you're using glibc 2.8.x])
  69. - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  70. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  71. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  72. - ;;
  73. - 2.9)
  74. - AC_MSG_RESULT(2.9 family)
  75. - AC_DEFINE([GLIBC_2_9], 1, [Define to 1 if you're using glibc 2.9.x])
  76. - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  77. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  78. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  79. - ;;
  80. - 2.10)
  81. - AC_MSG_RESULT(2.10 family)
  82. - AC_DEFINE([GLIBC_2_10], 1, [Define to 1 if you're using glibc 2.10.x])
  83. - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  84. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  85. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  86. - ;;
  87. - 2.11)
  88. - AC_MSG_RESULT(2.11 family)
  89. - AC_DEFINE([GLIBC_2_11], 1, [Define to 1 if you're using glibc 2.11.x])
  90. - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  91. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  92. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  93. - ;;
  94. - 2.12)
  95. - AC_MSG_RESULT(2.12 family)
  96. - AC_DEFINE([GLIBC_2_12], 1, [Define to 1 if you're using glibc 2.12.x])
  97. - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  98. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  99. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  100. - ;;
  101. - 2.13)
  102. - AC_MSG_RESULT(2.13 family)
  103. - AC_DEFINE([GLIBC_2_13], 1, [Define to 1 if you're using glibc 2.13.x])
  104. - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  105. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  106. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  107. - ;;
  108. - 2.14)
  109. - AC_MSG_RESULT(2.14 family)
  110. - AC_DEFINE([GLIBC_2_14], 1, [Define to 1 if you're using glibc 2.14.x])
  111. - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  112. + 2.[[3-6]])
  113. + AC_MSG_RESULT(${GLIBC_VERSION} family)
  114. + DEFAULT_SUPP="glibc-${GLIBC_VERSION}.supp ${DEFAULT_SUPP}"
  115. DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  116. DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  117. ;;
  118. - 2.15)
  119. - AC_MSG_RESULT(2.15 family)
  120. - AC_DEFINE([GLIBC_2_15], 1, [Define to 1 if you're using glibc 2.15.x])
  121. + 2.[[7-9]])
  122. + AC_MSG_RESULT(${GLIBC_VERSION} family)
  123. DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  124. DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  125. DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  126. ;;
  127. - 2.16)
  128. - AC_MSG_RESULT(2.16 family)
  129. - AC_DEFINE([GLIBC_2_16], 1, [Define to 1 if you're using glibc 2.16.x])
  130. + 2.10|2.11)
  131. + AC_MSG_RESULT(${GLIBC_VERSION} family)
  132. + AC_DEFINE([GLIBC_MANDATORY_STRLEN_REDIRECT], 1,
  133. + [Define to 1 if strlen() has been optimized heavily (amd64 glibc >= 2.10)])
  134. DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  135. DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  136. DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  137. ;;
  138. - 2.17)
  139. - AC_MSG_RESULT(2.17 family)
  140. - AC_DEFINE([GLIBC_2_17], 1, [Define to 1 if you're using glibc 2.17.x])
  141. - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  142. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  143. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  144. - ;;
  145. - 2.18)
  146. - AC_MSG_RESULT(2.18 family)
  147. - AC_DEFINE([GLIBC_2_18], 1, [Define to 1 if you're using glibc 2.18.x])
  148. - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  149. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  150. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  151. - ;;
  152. - 2.19)
  153. - AC_MSG_RESULT(2.19 family)
  154. - AC_DEFINE([GLIBC_2_19], 1, [Define to 1 if you're using glibc 2.19.x])
  155. - DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  156. - DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  157. - DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  158. - ;;
  159. - 2.20)
  160. - AC_MSG_RESULT(2.20 family)
  161. - AC_DEFINE([GLIBC_2_20], 1, [Define to 1 if you're using glibc 2.20.x])
  162. + 2.*)
  163. + AC_MSG_RESULT(${GLIBC_VERSION} family)
  164. + AC_DEFINE([GLIBC_MANDATORY_STRLEN_REDIRECT], 1,
  165. + [Define to 1 if strlen() has been optimized heavily (amd64 glibc >= 2.10)])
  166. + AC_DEFINE([GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT], 1,
  167. + [Define to 1 if index() and strlen() have been optimized heavily (x86 glibc >= 2.12)])
  168. DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
  169. DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
  170. DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
  171. @@ -1024,10 +924,9 @@ case "${GLIBC_VERSION}" in
  172. AC_DEFINE([BIONIC_LIBC], 1, [Define to 1 if you're using Bionic])
  173. DEFAULT_SUPP="bionic.supp ${DEFAULT_SUPP}"
  174. ;;
  175. -
  176. - *)
  177. + 2.0|2.1|*)
  178. AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
  179. - AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.19])
  180. + AC_MSG_ERROR([Valgrind requires glibc version 2.2 or later])
  181. AC_MSG_ERROR([or Darwin or Bionic libc])
  182. ;;
  183. esac
  184. diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c
  185. index 9d3c9b1..9aee707 100644
  186. --- a/coregrind/m_redir.c
  187. +++ b/coregrind/m_redir.c
  188. @@ -53,7 +53,7 @@
  189. #include "pub_core_demangle.h" // VG_(maybe_Z_demangle)
  190. #include "pub_core_libcproc.h" // VG_(libdir)
  191. -#include "config.h" /* GLIBC_2_* */
  192. +#include "config.h" /* GLIBC_MANDATORY_*_REDIRECT */
  193. /* This module is a critical part of the redirection/intercept system.
  194. @@ -1242,10 +1242,7 @@ void VG_(redir_initialise) ( void )
  195. start, otherwise ld.so (glibc-2.3.5) makes a lot of noise. */
  196. if (0==VG_(strcmp)("Memcheck", VG_(details).name)) {
  197. const HChar** mandatory;
  198. -# if defined(GLIBC_2_2) || defined(GLIBC_2_3) || defined(GLIBC_2_4) \
  199. - || defined(GLIBC_2_5) || defined(GLIBC_2_6) || defined(GLIBC_2_7) \
  200. - || defined(GLIBC_2_8) || defined(GLIBC_2_9) \
  201. - || defined(GLIBC_2_10) || defined(GLIBC_2_11)
  202. +# ifndef GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT
  203. mandatory = NULL;
  204. # else
  205. /* for glibc-2.12 and later, this is mandatory - can't sanely
  206. @@ -1282,9 +1279,7 @@ void VG_(redir_initialise) ( void )
  207. add_hardwired_spec(
  208. "ld-linux-x86-64.so.2", "strlen",
  209. (Addr)&VG_(amd64_linux_REDIR_FOR_strlen),
  210. -# if defined(GLIBC_2_2) || defined(GLIBC_2_3) || defined(GLIBC_2_4) \
  211. - || defined(GLIBC_2_5) || defined(GLIBC_2_6) || defined(GLIBC_2_7) \
  212. - || defined(GLIBC_2_8) || defined(GLIBC_2_9)
  213. +# ifndef GLIBC_MANDATORY_STRLEN_REDIRECT
  214. NULL
  215. # else
  216. /* for glibc-2.10 and later, this is mandatory - can't sanely
  217. --
  218. 2.1.4