giggle: initial release
[crux-ports.git] / ruby / ruby-valgrind.diff
1 diff -aur ruby-1.8.6.orig/Makefile.in ruby-1.8.6/Makefile.in
2 --- ruby-1.8.6.orig/Makefile.in 2007-02-13 00:01:19.000000000 +0100
3 +++ ruby-1.8.6/Makefile.in      2007-03-12 22:34:13.553865125 +0100
4 @@ -34,7 +34,7 @@
5  
6  empty =
7  OUTFLAG = @OUTFLAG@$(empty)
8 -CFLAGS = @CFLAGS@ @XCFLAGS@ @ARCH_FLAG@
9 +CFLAGS = @CFLAGS@ @XCFLAGS@ @ARCH_FLAG@ @VALGRIND_CFLAGS@
10  CPPFLAGS = -I. -I$(srcdir) @CPPFLAGS@
11  LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
12  EXTLDFLAGS = 
13 Only in ruby-1.8.6: aclocal.m4
14 Only in ruby-1.8.6: autom4te.cache
15 diff -aur ruby-1.8.6.orig/configure ruby-1.8.6/configure
16 --- ruby-1.8.6.orig/configure   2007-03-12 20:19:03.000000000 +0100
17 +++ ruby-1.8.6/configure        2007-03-12 22:36:40.826257700 +0100
18 @@ -697,6 +697,9 @@
19  MAKEDIRS
20  LIBOBJS
21  ALLOCA
22 +PKG_CONFIG
23 +VALGRIND_CFLAGS
24 +VALGRIND_LIBS
25  DLDFLAGS
26  ARCH_FLAG
27  STATIC
28 @@ -762,7 +765,10 @@
29  CPPFLAGS
30  CPP
31  YACC
32 -YFLAGS'
33 +YFLAGS
34 +PKG_CONFIG
35 +VALGRIND_CFLAGS
36 +VALGRIND_LIBS'
37  
38  
39  # Initialize some variables set by options.
40 @@ -1356,6 +1362,7 @@
41    --enable-pthread        use pthread library.
42    --disable-fastthread    do not use the fastthread mutex
43    --enable-setreuid       use setreuid()/setregid() according to need even if obsolete.
44 +  --enable-valgrind       use valgrind support.
45    --disable-rpath         embed run path into extension libraries.
46    --enable-shared         build a shared library for Ruby.
47    --enable-install-doc    build and install rdoc indexes during install
48 @@ -1387,6 +1394,11 @@
49    YFLAGS      The list of arguments that will be passed by default to $YACC.
50                This script will default YFLAGS to the empty string to avoid a
51                default value of `-d' given by some make applications.
52 +  PKG_CONFIG  path to pkg-config utility
53 +  VALGRIND_CFLAGS
54 +              C compiler flags for VALGRIND, overriding pkg-config
55 +  VALGRIND_LIBS
56 +              linker flags for VALGRIND, overriding pkg-config
57  
58  Use these variables to override the choices made by `configure' or to help
59  it to find libraries and programs with nonstandard names/locations.
60 @@ -12983,13 +12995,11 @@
61  cat confdefs.h >>conftest.$ac_ext
62  cat >>conftest.$ac_ext <<_ACEOF
63  /* end confdefs.h.  */
64 -#include <sys/types.h> /* for off_t */
65 -     #include <stdio.h>
66 +#include <stdio.h>
67  int
68  main ()
69  {
70 -int (*fp) (FILE *, off_t, int) = fseeko;
71 -     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
72 +return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
73    ;
74    return 0;
75  }
76 @@ -13029,13 +13039,11 @@
77  cat >>conftest.$ac_ext <<_ACEOF
78  /* end confdefs.h.  */
79  #define _LARGEFILE_SOURCE 1
80 -#include <sys/types.h> /* for off_t */
81 -     #include <stdio.h>
82 +#include <stdio.h>
83  int
84  main ()
85  {
86 -int (*fp) (FILE *, off_t, int) = fseeko;
87 -     return fseeko (stdin, 0, 0) && fp (stdin, 0, 0);
88 +return fseeko (stdin, 0, 0) && (fseeko) (stdin, 0, 0);
89    ;
90    return 0;
91  }
92 @@ -15762,6 +15770,219 @@
93      fi
94  fi
95  
96 +# Check whether --enable-valgrind was given.
97 +if test "${enable_valgrind+set}" = set; then
98 +  enableval=$enable_valgrind; want_valgrind=$enableval
99 +else
100 +  want_valgrind=auto
101 +fi
102 +
103 +
104 +if test x"$want_valgrind" != xno; then
105 +
106 +
107 +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
108 +       if test -n "$ac_tool_prefix"; then
109 +  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
110 +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
111 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
112 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
113 +if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
114 +  echo $ECHO_N "(cached) $ECHO_C" >&6
115 +else
116 +  case $PKG_CONFIG in
117 +  [\\/]* | ?:[\\/]*)
118 +  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
119 +  ;;
120 +  *)
121 +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
122 +for as_dir in $PATH
123 +do
124 +  IFS=$as_save_IFS
125 +  test -z "$as_dir" && as_dir=.
126 +  for ac_exec_ext in '' $ac_executable_extensions; do
127 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
128 +    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
129 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
130 +    break 2
131 +  fi
132 +done
133 +done
134 +IFS=$as_save_IFS
135 +
136 +  ;;
137 +esac
138 +fi
139 +PKG_CONFIG=$ac_cv_path_PKG_CONFIG
140 +if test -n "$PKG_CONFIG"; then
141 +  { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
142 +echo "${ECHO_T}$PKG_CONFIG" >&6; }
143 +else
144 +  { echo "$as_me:$LINENO: result: no" >&5
145 +echo "${ECHO_T}no" >&6; }
146 +fi
147 +
148 +
149 +fi
150 +if test -z "$ac_cv_path_PKG_CONFIG"; then
151 +  ac_pt_PKG_CONFIG=$PKG_CONFIG
152 +  # Extract the first word of "pkg-config", so it can be a program name with args.
153 +set dummy pkg-config; ac_word=$2
154 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
155 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
156 +if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
157 +  echo $ECHO_N "(cached) $ECHO_C" >&6
158 +else
159 +  case $ac_pt_PKG_CONFIG in
160 +  [\\/]* | ?:[\\/]*)
161 +  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
162 +  ;;
163 +  *)
164 +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
165 +for as_dir in $PATH
166 +do
167 +  IFS=$as_save_IFS
168 +  test -z "$as_dir" && as_dir=.
169 +  for ac_exec_ext in '' $ac_executable_extensions; do
170 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
171 +    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
172 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
173 +    break 2
174 +  fi
175 +done
176 +done
177 +IFS=$as_save_IFS
178 +
179 +  ;;
180 +esac
181 +fi
182 +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
183 +if test -n "$ac_pt_PKG_CONFIG"; then
184 +  { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
185 +echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; }
186 +else
187 +  { echo "$as_me:$LINENO: result: no" >&5
188 +echo "${ECHO_T}no" >&6; }
189 +fi
190 +
191 +  if test "x$ac_pt_PKG_CONFIG" = x; then
192 +    PKG_CONFIG=""
193 +  else
194 +    case $cross_compiling:$ac_tool_warned in
195 +yes:)
196 +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
197 +whose name does not start with the host triplet.  If you think this
198 +configuration is useful to you, please write to autoconf@gnu.org." >&5
199 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
200 +whose name does not start with the host triplet.  If you think this
201 +configuration is useful to you, please write to autoconf@gnu.org." >&2;}
202 +ac_tool_warned=yes ;;
203 +esac
204 +    PKG_CONFIG=$ac_pt_PKG_CONFIG
205 +  fi
206 +else
207 +  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
208 +fi
209 +
210 +fi
211 +if test -n "$PKG_CONFIG"; then
212 +       _pkg_min_version=0.9.0
213 +       { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
214 +echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; }
215 +       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
216 +               { echo "$as_me:$LINENO: result: yes" >&5
217 +echo "${ECHO_T}yes" >&6; }
218 +       else
219 +               { echo "$as_me:$LINENO: result: no" >&5
220 +echo "${ECHO_T}no" >&6; }
221 +               PKG_CONFIG=""
222 +       fi
223 +
224 +fi
225 +
226 +pkg_failed=no
227 +{ echo "$as_me:$LINENO: checking for VALGRIND" >&5
228 +echo $ECHO_N "checking for VALGRIND... $ECHO_C" >&6; }
229 +
230 +if test -n "$PKG_CONFIG"; then
231 +    if test -n "$VALGRIND_CFLAGS"; then
232 +        pkg_cv_VALGRIND_CFLAGS="$VALGRIND_CFLAGS"
233 +    else
234 +        if test -n "$PKG_CONFIG" && \
235 +    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"valgrind\"") >&5
236 +  ($PKG_CONFIG --exists --print-errors "valgrind") 2>&5
237 +  ac_status=$?
238 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
239 +  (exit $ac_status); }; then
240 +  pkg_cv_VALGRIND_CFLAGS=`$PKG_CONFIG --cflags "valgrind" 2>/dev/null`
241 +else
242 +  pkg_failed=yes
243 +fi
244 +    fi
245 +else
246 +       pkg_failed=untried
247 +fi
248 +if test -n "$PKG_CONFIG"; then
249 +    if test -n "$VALGRIND_LIBS"; then
250 +        pkg_cv_VALGRIND_LIBS="$VALGRIND_LIBS"
251 +    else
252 +        if test -n "$PKG_CONFIG" && \
253 +    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"valgrind\"") >&5
254 +  ($PKG_CONFIG --exists --print-errors "valgrind") 2>&5
255 +  ac_status=$?
256 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
257 +  (exit $ac_status); }; then
258 +  pkg_cv_VALGRIND_LIBS=`$PKG_CONFIG --libs "valgrind" 2>/dev/null`
259 +else
260 +  pkg_failed=yes
261 +fi
262 +    fi
263 +else
264 +       pkg_failed=untried
265 +fi
266 +
267 +
268 +
269 +if test $pkg_failed = yes; then
270 +
271 +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
272 +        _pkg_short_errors_supported=yes
273 +else
274 +        _pkg_short_errors_supported=no
275 +fi
276 +        if test $_pkg_short_errors_supported = yes; then
277 +               VALGRIND_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "valgrind"`
278 +        else
279 +               VALGRIND_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "valgrind"`
280 +        fi
281 +       # Put the nasty error message in config.log where it belongs
282 +       echo "$VALGRIND_PKG_ERRORS" >&5
283 +
284 +       { echo "$as_me:$LINENO: result: no" >&5
285 +echo "${ECHO_T}no" >&6; }
286 +                have_valgrind=no
287 +elif test $pkg_failed = untried; then
288 +       have_valgrind=no
289 +else
290 +       VALGRIND_CFLAGS=$pkg_cv_VALGRIND_CFLAGS
291 +       VALGRIND_LIBS=$pkg_cv_VALGRIND_LIBS
292 +        { echo "$as_me:$LINENO: result: yes" >&5
293 +echo "${ECHO_T}yes" >&6; }
294 +       have_valgrind=yes
295 +fi
296 +
297 +   if test x"$have_valgrind" = xyes; then
298 +       cat >>confdefs.h <<\_ACEOF
299 +#define HAVE_VALGRIND 1
300 +_ACEOF
301 +
302 +   elif test x"$want_valgrind" = xyes -a x"$have_valgrind" = xno; then
303 +       { { echo "$as_me:$LINENO: error: valgrind support requested but valgrind not found" >&5
304 +echo "$as_me: error: valgrind support requested but valgrind not found" >&2;}
305 +   { (exit 1); exit 1; }; }
306 +   fi
307 +fi
308 +
309  DEFAULT_KCODE="KCODE_NONE"
310  
311  
312 @@ -17796,6 +18017,9 @@
313  MAKEDIRS!$MAKEDIRS$ac_delim
314  LIBOBJS!$LIBOBJS$ac_delim
315  ALLOCA!$ALLOCA$ac_delim
316 +PKG_CONFIG!$PKG_CONFIG$ac_delim
317 +VALGRIND_CFLAGS!$VALGRIND_CFLAGS$ac_delim
318 +VALGRIND_LIBS!$VALGRIND_LIBS$ac_delim
319  DLDFLAGS!$DLDFLAGS$ac_delim
320  ARCH_FLAG!$ARCH_FLAG$ac_delim
321  STATIC!$STATIC$ac_delim
322 @@ -17805,9 +18029,6 @@
323  DLEXT2!$DLEXT2$ac_delim
324  LIBEXT!$LIBEXT$ac_delim
325  LINK_SO!$LINK_SO$ac_delim
326 -LIBPATHFLAG!$LIBPATHFLAG$ac_delim
327 -RPATHFLAG!$RPATHFLAG$ac_delim
328 -LIBPATHENV!$LIBPATHENV$ac_delim
329  _ACEOF
330  
331    if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
332 @@ -17849,6 +18070,9 @@
333  ac_delim='%!_!# '
334  for ac_last_try in false false false false false :; do
335    cat >conf$$subs.sed <<_ACEOF
336 +LIBPATHFLAG!$LIBPATHFLAG$ac_delim
337 +RPATHFLAG!$RPATHFLAG$ac_delim
338 +LIBPATHENV!$LIBPATHENV$ac_delim
339  TRY_LINK!$TRY_LINK$ac_delim
340  STRIP!$STRIP$ac_delim
341  EXTSTATIC!$EXTSTATIC$ac_delim
342 @@ -17893,7 +18117,7 @@
343  LTLIBOBJS!$LTLIBOBJS$ac_delim
344  _ACEOF
345  
346 -  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 42; then
347 +  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 45; then
348      break
349    elif $ac_last_try; then
350      { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
351 diff -aur ruby-1.8.6.orig/configure.in ruby-1.8.6/configure.in
352 --- ruby-1.8.6.orig/configure.in        2007-02-28 14:23:42.000000000 +0100
353 +++ ruby-1.8.6/configure.in     2007-03-12 22:34:52.828103236 +0100
354 @@ -890,6 +890,20 @@
355      fi
356  fi
357  
358 +AC_ARG_ENABLE(valgrind,
359 +       [  --enable-valgrind       use valgrind support.],
360 +       [want_valgrind=$enableval], [want_valgrind=auto])
361 +
362 +if test x"$want_valgrind" != xno; then
363 +   PKG_CHECK_MODULES(VALGRIND, valgrind, have_valgrind=yes, have_valgrind=no)
364 +
365 +   if test x"$have_valgrind" = xyes; then
366 +       AC_DEFINE(HAVE_VALGRIND)
367 +   elif test x"$want_valgrind" = xyes -a x"$have_valgrind" = xno; then
368 +       AC_MSG_ERROR(valgrind support requested but valgrind not found)
369 +   fi
370 +fi
371 +
372  dnl default value for $KANJI
373  DEFAULT_KCODE="KCODE_NONE"
374  
375 diff -aur ruby-1.8.6.orig/gc.c ruby-1.8.6/gc.c
376 --- ruby-1.8.6.orig/gc.c        2007-03-03 08:30:46.000000000 +0100
377 +++ ruby-1.8.6/gc.c     2007-03-12 22:36:25.201367287 +0100
378 @@ -34,6 +34,12 @@
379  #include <windows.h>
380  #endif
381  
382 +#ifdef HAVE_VALGRIND
383 +#include <memcheck.h>
384 +#else
385 +#define VALGRIND_MAKE_MEM_DEFINED(p, n) /* empty */
386 +#endif
387 +
388  void re_free_registers _((struct re_registers*));
389  void rb_io_fptr_finalize _((struct OpenFile*));
390  
391 @@ -623,6 +629,9 @@
392      register long n;
393  {
394      VALUE v;
395 +
396 +    VALGRIND_MAKE_MEM_DEFINED(x, sizeof(*x) * n);
397 +
398      while (n--) {
399          v = *x;
400         if (is_pointer_to_heap((void *)v)) {
401 @@ -713,7 +722,10 @@
402  {
403      register RVALUE *obj;
404  
405 +    VALGRIND_MAKE_MEM_DEFINED(&ptr, sizeof(ptr));
406      obj = RANY(ptr);
407 +    VALGRIND_MAKE_MEM_DEFINED(obj, sizeof(*obj));
408 +
409      if (rb_special_const_p(ptr)) return; /* special const not marked */
410      if (obj->as.basic.flags == 0) return;       /* free cell */
411      if (obj->as.basic.flags & FL_MARK) return;  /* already marked */