X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fmemcmp.m4;h=db1146b1abcf5f1938a7c965f2ba7805eeae82b2;hb=7f3fdea4cbaa7fb29dce64828654ab3ad613a0a1;hp=c995a3298782477841963a6e0b0dc20c495d85ca;hpb=9c9a9765811eb1e698517065953e09d6b8c07400;p=gnulib.git diff --git a/m4/memcmp.m4 b/m4/memcmp.m4 index c995a3298..db1146b1a 100644 --- a/m4/memcmp.m4 +++ b/m4/memcmp.m4 @@ -1,5 +1,5 @@ -# memcmp.m4 serial 13 -dnl Copyright (C) 2002, 2003, 2004, 2007, 2008 Free Software Foundation, Inc. +# memcmp.m4 serial 15 +dnl Copyright (C) 2002-2004, 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -13,19 +13,56 @@ AC_DEFUN([gl_FUNC_MEMCMP], AC_CACHE_CHECK([whether cross-compiling target has memcmp], [ac_cv_func_memcmp_working], [AC_LINK_IFELSE([ - AC_LANG_PROGRAM([[#include - ]], [[int ret = memcmp ("foo", "bar", 0);]])], - [ac_cv_func_memcmp_working=yes], - [ac_cv_func_memcmp_working=no])]) + AC_LANG_PROGRAM([[#include + ]], [[int ret = memcmp ("foo", "bar", 0);]])], + [ac_cv_func_memcmp_working=yes], + [ac_cv_func_memcmp_working=no])]) fi AC_FUNC_MEMCMP - dnl Note: AC_FUNC_MEMCMP does AC_LIBOBJ(memcmp). + dnl Note: AC_FUNC_MEMCMP does AC_LIBOBJ([memcmp]). if test $ac_cv_func_memcmp_working = no; then - AC_DEFINE(memcmp, rpl_memcmp, + AC_DEFINE([memcmp], [rpl_memcmp], [Define to rpl_memcmp if the replacement function should be used.]) gl_PREREQ_MEMCMP fi ]) +# Redefine AC_FUNC_MEMCMP, because it is no longer maintained in Autoconf. +AC_DEFUN([AC_FUNC_MEMCMP], +[ + AC_CACHE_CHECK([for working memcmp], [ac_cv_func_memcmp_working], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [AC_INCLUDES_DEFAULT], + [[/* Some versions of memcmp are not 8-bit clean. */ + char c0 = '\100', c1 = '\200', c2 = '\201'; + if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) + return 1; + /* The Next x86 OpenStep bug shows up only when comparing 16 bytes + or more and with at least one buffer not starting on a 4-byte + boundary. William Lewis provided this test program. */ + { + char foo[21]; + char bar[21]; + int i; + for (i = 0; i < 4; i++) + { + char *a = foo + i; + char *b = bar + i; + strcpy (a, "--------01111111"); + strcpy (b, "--------10000000"); + if (memcmp (a, b, 16) >= 0) + return 1; + } + return 0; + } + ]])], + [ac_cv_func_memcmp_working=yes], + [ac_cv_func_memcmp_working=no], + [ac_cv_func_memcmp_working=no])]) + test $ac_cv_func_memcmp_working = no && + AC_LIBOBJ([memcmp]) +]) + # Prerequisites of lib/memcmp.c. AC_DEFUN([gl_PREREQ_MEMCMP], [:])