X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=acinclude.m4;h=1e7989f0196cc0707be9421b12f5f8330281a42c;hb=5fe577ebbec3cbcc6f77d966ed04f099b40a0d0b;hp=f16bbf4bc68455865315acf297315d4f5933edac;hpb=8833d73dea713cc86d0bc94d3d02e663067f3f9e;p=openvswitch diff --git a/acinclude.m4 b/acinclude.m4 index f16bbf4b..1e7989f0 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -154,6 +154,37 @@ AC_DEFUN([OVS_CHECK_IF_PACKET], [Define to 1 if net/if_packet.h is available.]) fi]) +dnl Checks for buggy strtok_r. +dnl +dnl Some versions of glibc 2.7 has a bug in strtok_r when compiling +dnl with optimization that can cause segfaults: +dnl +dnl http://sources.redhat.com/bugzilla/show_bug.cgi?id=5614. +AC_DEFUN([OVS_CHECK_STRTOK_R], + [AC_CACHE_CHECK( + [whether strtok_r macro segfaults on some inputs], + [ovs_cv_strtok_r_bug], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM([#include + #include + ], + [[char string[] = ":::"; + char *save_ptr = (char *) 0xc0ffee; + char *token1, *token2; + token1 = strtok_r(string, ":", &save_ptr); + token2 = strtok_r(NULL, ":", &save_ptr); + printf ("%s %s\n", token1, token2); + return 0; + ]])], + [ovs_cv_strtok_r_bug=no], + [ovs_cv_strtok_r_bug=yes], + [ovs_cv_strtok_r_bug=yes])]) + if test $ovs_cv_strtok_r_bug = yes; then + AC_DEFINE([HAVE_STRTOK_R_BUG], [1], + [Define if strtok_r macro segfaults on some inputs]) + fi +]) + dnl ---------------------------------------------------------------------- dnl These macros are from GNU PSPP, with the following original license: dnl Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.