This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Assume we have sane C89 memcmp()
authorAaron Crane <arc@cpan.org>
Thu, 12 Oct 2017 12:31:56 +0000 (14:31 +0200)
committerAaron Crane <arc@cpan.org>
Sat, 21 Oct 2017 15:51:41 +0000 (16:51 +0100)
"Sane" means that it works correctly on bytes with their high bit set, as
C89 also requires.

We therefore no longer need to probe for and/or use BSD bcmp().

33 files changed:
Configure
Cross/config.sh-arm-linux
Cross/config.sh-arm-linux-n770
NetWare/config.wc
NetWare/config_H.wc
Porting/Glossary
Porting/config.sh
Porting/config_H
config_h.SH
configure.com
embed.fnc
embed.h
ext/SDBM_File/sdbm.h
handy.h
hints/epix.sh
hints/svr4.sh
hints/svr5.sh
perl.h
plan9/config.plan9
plan9/config_h.sample
plan9/config_sh.sample
proto.h
symbian/config.sh
uconfig.h
uconfig.sh
uconfig64.sh
util.c
win32/config.ce
win32/config.gc
win32/config.vc
win32/config_H.ce
win32/config_H.gc
win32/config_H.vc

index 66df8a8..eee9860 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -391,7 +391,6 @@ d_attribute_unused=''
 d_attribute_warn_unused_result=''
 d_printf_format_null=''
 d_backtrace=''
-d_bcmp=''
 d_builtin_choose_expr=''
 d_builtin_expect=''
 d_builtin_add_overflow=''
@@ -664,7 +663,6 @@ d_mbrtowc=''
 d_mbstowcs=''
 d_mbtowc=''
 d_memchr=''
-d_memcmp=''
 d_memmem=''
 d_memrchr=''
 d_mkdir=''
@@ -743,7 +741,6 @@ d_rename=''
 d_rint=''
 d_rmdir=''
 d_round=''
-d_sanemcmp=''
 d_sbrkproto=''
 d_scalbn=''
 d_scalbnl=''
@@ -11361,10 +11358,6 @@ set d_attribute_warn_unused_result
 eval $setvar
 $rm -f attrib*
 
-: see if bcmp exists
-set bcmp d_bcmp
-eval $inlibc
-
 : see if getpgrp exists
 set getpgrp d_getpgrp
 eval $inlibc
@@ -16615,10 +16608,6 @@ eval $inlibc
 set memchr d_memchr
 eval $inlibc
 
-: see if memcmp exists
-set memcmp d_memcmp
-eval $inlibc
-
 : see if memmem exists
 set memmem d_memmem
 eval $inlibc
@@ -17873,84 +17862,6 @@ eval $inlibc
 set round d_round
 eval $inlibc
 
-: see if memory.h is available.
-val=''
-set memory.h val
-eval $inhdr
-
-: See if it conflicts with string.h
-case "$val" in
-$define)
-       case "$strings" in
-       '') ;;
-       *)
-               $cppstdin $cppflags $cppminus < $strings > mem.h
-               if $contains 'memcpy' mem.h >/dev/null 2>&1; then
-                       echo " "
-                       echo "We won't be including <memory.h>."
-                       val="$undef"
-               fi
-               $rm -f mem.h
-               ;;
-       esac
-esac
-set i_memory
-eval $setvar
-
-: can memcmp be trusted to compare relative magnitude?
-val="$undef"
-case "$d_memcmp" in
-"$define")
-       echo " "
-       echo "Checking if your memcmp() can compare relative magnitude..." >&4
-       $cat >try.c <<EOCP
-#$i_memory I_MEMORY
-#$i_stdlib I_STDLIB
-#$i_string I_STRING
-#$i_unistd I_UNISTD
-EOCP
-       $cat >>try.c <<'EOCP'
-#include <stdio.h>
-#ifdef I_MEMORY
-#  include <memory.h>
-#endif
-#ifdef I_STDLIB
-#  include <stdlib.h>
-#endif
-#ifdef I_STRING
-#  include <string.h>
-#else
-#  include <strings.h>
-#endif
-#ifdef I_UNISTD
-#  include <unistd.h>  /* Needed for NetBSD */
-#endif
-int main()
-{
-char a = -1;
-char b = 0;
-if ((a < b) && memcmp(&a, &b, 1) < 0)
-       exit(1);
-exit(0);
-}
-EOCP
-       set try
-       if eval $compile_ok; then
-               if $run ./try 2>/dev/null; then
-                       echo "Yes, it can."
-                       val="$define"
-               else
-                       echo "No, it can't (it uses signed chars)."
-               fi
-       else
-               echo "(I can't compile the test program, so we'll assume not...)"
-       fi
-       ;;
-esac
-$rm_try
-set d_sanemcmp
-eval $setvar
-
 : see if prototype for sbrk is available
 echo " "
 set d_sbrkproto sbrk $i_unistd unistd.h
@@ -23395,6 +23306,30 @@ else
        i_machcthr="$undef"
 fi
 
+: see if memory.h is available.
+val=''
+set memory.h val
+eval $inhdr
+
+: See if it conflicts with string.h
+case "$val" in
+$define)
+       case "$strings" in
+       '') ;;
+       *)
+               $cppstdin $cppflags $cppminus < $strings > mem.h
+               if $contains 'memcpy' mem.h >/dev/null 2>&1; then
+                       echo " "
+                       echo "We won't be including <memory.h>."
+                       val="$undef"
+               fi
+               $rm -f mem.h
+               ;;
+       esac
+esac
+set i_memory
+eval $setvar
+
 : see if this is a mntent.h system
 set mntent.h i_mntent
 eval $inhdr
@@ -24512,7 +24447,6 @@ d_attribute_pure='$d_attribute_pure'
 d_attribute_unused='$d_attribute_unused'
 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
 d_backtrace='$d_backtrace'
-d_bcmp='$d_bcmp'
 d_bsd='$d_bsd'
 d_bsdgetpgrp='$d_bsdgetpgrp'
 d_bsdsetpgrp='$d_bsdsetpgrp'
@@ -24769,7 +24703,6 @@ d_mbrtowc='$d_mbrtowc'
 d_mbstowcs='$d_mbstowcs'
 d_mbtowc='$d_mbtowc'
 d_memchr='$d_memchr'
-d_memcmp='$d_memcmp'
 d_memmem='$d_memmem'
 d_memrchr='$d_memrchr'
 d_mkdir='$d_mkdir'
@@ -24860,7 +24793,6 @@ d_rewinddir='$d_rewinddir'
 d_rint='$d_rint'
 d_rmdir='$d_rmdir'
 d_round='$d_round'
-d_sanemcmp='$d_sanemcmp'
 d_sbrkproto='$d_sbrkproto'
 d_scalbn='$d_scalbn'
 d_scalbnl='$d_scalbnl'
index 2be99d6..4b21af8 100644 (file)
@@ -125,7 +125,6 @@ d_attribute_pure='undef'
 d_attribute_unused='undef'
 d_attribute_warn_unused_result='undef'
 d_backtrace='undef'
-d_bcmp='define'
 d_bsd='undef'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
@@ -380,7 +379,6 @@ d_mbrtowc='undef'
 d_mbstowcs='define'
 d_mbtowc='define'
 d_memchr='define'
-d_memcmp='define'
 d_memmem='undef'
 d_memrchr='undef'
 d_mkdir='define'
@@ -469,7 +467,6 @@ d_rewinddir='define'
 d_rint='undef'
 d_rmdir='define'
 d_round='undef'
-d_sanemcmp='define'
 d_sbrkproto='define'
 d_scalbn='undef'
 d_scalbnl='define'
index 23a1622..fa612da 100644 (file)
@@ -117,7 +117,6 @@ d_attribute_noreturn='undef'
 d_attribute_pure='undef'
 d_attribute_unused='undef'
 d_attribute_warn_unused_result='undef'
-d_bcmp='define'
 d_bsd='undef'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
@@ -295,7 +294,6 @@ d_mblen='define'
 d_mbstowcs='define'
 d_mbtowc='define'
 d_memchr='define'
-d_memcmp='define'
 d_mkdir='define'
 d_mkdtemp='define'
 d_mkfifo='define'
@@ -363,7 +361,6 @@ d_recvmsg='define'
 d_rename='define'
 d_rewinddir='define'
 d_rmdir='define'
-d_sanemcmp='define'
 d_sbrkproto='define'
 d_scalbnl='define'
 d_sched_yield='define'
index 7a77143..d2149da 100644 (file)
@@ -112,7 +112,6 @@ d_attribute_pure='undef'
 d_attribute_unused='undef'
 d_attribute_warn_unused_result='undef'
 d_backtrace='undef'
-d_bcmp='undef'
 d_bsd='define'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
@@ -369,7 +368,6 @@ d_mbrtowc='undef'
 d_mbstowcs='define'
 d_mbtowc='define'
 d_memchr='define'
-d_memcmp='define'
 d_memmem='undef'
 d_memrchr='undef'
 d_mkdir='define'
@@ -458,7 +456,6 @@ d_rewinddir='define'
 d_rint='undef'
 d_rmdir='define'
 d_round='undef'
-d_sanemcmp='define'
 d_sbrkproto='undef'
 d_scalbn='undef'
 d_scalbnl='undef'
index 0d79872..89e0f9c 100644 (file)
 #define __attribute__(_arg_)
 #endif
 
-/* HAS_BCMP:
- *     This symbol is defined if the bcmp() routine is available to
- *     compare blocks of memory.
- */
-/*#define HAS_BCMP     /**/
-
 /* HAS_CHOWN:
  *     This symbol, if defined, indicates that the chown routine is
  *     available.
  */
 #define HAS_MBTOWC             /**/
 
-/* HAS_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     to compare blocks of memory.
- */
-#define HAS_MEMCMP     /**/
-
 /* HAS_MKDIR:
  *     This symbol, if defined, indicates that the mkdir routine is available
  *     to create directories.  Otherwise you should fork off a new process to
  */
 /*#define HAS_RECVMSG          /**/
 
-/* HAS_SANE_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     and can be used to compare relative magnitudes of chars with their high
- *     bits set.  If it is not defined, roll your own version.
- */
-#define HAS_SANE_MEMCMP        /**/
-
 /* HAS_SBRK_PROTO:
  *     This symbol, if defined, indicates that the system provides
  *     a prototype for the sbrk() function.  Otherwise, it is up
index f5024fa..dbbce71 100644 (file)
@@ -495,10 +495,6 @@ d_backtrace (d_backtrace.U):
        indicates to the C program that the backtrace() routine is available
        to get a stack trace.
 
-d_bcmp (d_bcmp.U):
-       This variable conditionally defines the HAS_BCMP symbol if
-       the bcmp() routine is available to compare strings.
-
 d_bsd (Guess.U):
        This symbol conditionally defines the symbol BSD when running on a
        BSD system.
@@ -1679,11 +1675,6 @@ d_memchr (d_memchr.U):
        indicates to the C program that the memchr() routine is available
        to locate characters within a C string.
 
-d_memcmp (d_memcmp.U):
-       This variable conditionally defines the HAS_MEMCMP symbol, which
-       indicates to the C program that the memcmp() routine is available
-       to compare blocks of memory.
-
 d_memmem (d_memmem.U):
        This variable conditionally defines the HAS_MEMMEM symbol, which
        indicates to the C program that the memmem() routine is available
@@ -2152,11 +2143,6 @@ d_round (d_round.U):
        This variable conditionally defines the HAS_ROUND symbol, which
        indicates to the C program that the round() routine is available.
 
-d_sanemcmp (d_sanemcmp.U):
-       This variable conditionally defines the HAS_SANE_MEMCMP symbol if
-       the memcpy() routine is available and can be used to compare relative
-       magnitudes of chars with their high bits set.
-
 d_sbrkproto (d_sbrkproto.U):
        This variable conditionally defines the HAS_SBRK_PROTO symbol,
        which indicates to the C program that the system provides
index ed94c92..c3e3296 100644 (file)
@@ -133,7 +133,6 @@ d_attribute_pure='define'
 d_attribute_unused='define'
 d_attribute_warn_unused_result='define'
 d_backtrace='define'
-d_bcmp='define'
 d_bsd='define'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
@@ -390,7 +389,6 @@ d_mbrtowc='undef'
 d_mbstowcs='define'
 d_mbtowc='define'
 d_memchr='define'
-d_memcmp='define'
 d_memmem='define'
 d_memrchr='define'
 d_mkdir='define'
@@ -481,7 +479,6 @@ d_rewinddir='define'
 d_rint='define'
 d_rmdir='define'
 d_round='define'
-d_sanemcmp='define'
 d_sbrkproto='define'
 d_scalbn='define'
 d_scalbnl='define'
index 76a2061..73276fa 100644 (file)
  */
 #define HAS_ALARM              /**/
 
-/* HAS_BCMP:
- *     This symbol is defined if the bcmp() routine is available to
- *     compare blocks of memory.
- */
-#define HAS_BCMP       /**/
-
 /* HAS_CHOWN:
  *     This symbol, if defined, indicates that the chown routine is
  *     available.
  */
 #define HAS_MBTOWC             /**/
 
-/* HAS_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     to compare blocks of memory.
- */
-#define HAS_MEMCMP     /**/
-
 /* HAS_MEMRCHR:
  *     This symbol, if defined, indicates that the memrchr routine is
  *     available to return a pointer to the last occurrence of a byte in
 /*#define HAS_READDIR_R           / **/
 #define READDIR_R_PROTO 0         /**/
 
-/* HAS_SANE_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     and can be used to compare relative magnitudes of chars with their high
- *     bits set.  If it is not defined, roll your own version.
- */
-#define HAS_SANE_MEMCMP        /**/
-
 /* HAS_SETGRENT_R:
  *     This symbol, if defined, indicates that the setgrent_r routine
  *     is available to setgrent re-entrantly.
index 26d4f33..88770e7 100755 (executable)
@@ -63,12 +63,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_alarm HAS_ALARM            /**/
 
-/* HAS_BCMP:
- *     This symbol is defined if the bcmp() routine is available to
- *     compare blocks of memory.
- */
-#$d_bcmp HAS_BCMP      /**/
-
 /* HAS_CBRT:
  *     This symbol, if defined, indicates that the cbrt() (cube root)
  *     function is available.
@@ -285,12 +279,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_mbtowc HAS_MBTOWC          /**/
 
-/* HAS_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     to compare blocks of memory.
- */
-#$d_memcmp HAS_MEMCMP  /**/
-
 /* HAS_MKDIR:
  *     This symbol, if defined, indicates that the mkdir routine is available
  *     to create directories.  Otherwise you should fork off a new process to
@@ -1091,13 +1079,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_open3 HAS_OPEN3            /**/
 
-/* HAS_SANE_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     and can be used to compare relative magnitudes of chars with their high
- *     bits set.  If it is not defined, roll your own version.
- */
-#$d_sanemcmp HAS_SANE_MEMCMP   /**/
-
 /* HAS_SIGACTION:
  *     This symbol, if defined, indicates that Vr4's sigaction() routine
  *     is available.
index b91664b..8a923ed 100644 (file)
@@ -5372,7 +5372,6 @@ $   ENDIF
 $   d_attribut="undef"
 $ ENDIF
 $!
-$ d_bcmp="define"
 $ d_getitimer="define"
 $ d_gettimeod="define"
 $ d_mmap="define"
@@ -5984,7 +5983,6 @@ $ WC "d_attribute_warn_unused_result='undef'"
 $ WC "d_prctl='undef'"
 $ WC "d_prctl_set_name='undef'"
 $ WC "d_printf_format_null='undef'"
-$ WC "d_bcmp='" + d_bcmp + "'"
 $ WC "d_bincompat3='undef'"
 $ WC "d_bsd='undef'"
 $ WC "d_bsdgetpgrp='undef'"
@@ -6215,7 +6213,6 @@ $ WC "d_mbrtowc='undef'"
 $ WC "d_mbstowcs='" + d_mbstowcs + "'"
 $ WC "d_mbtowc='" + d_mbtowc + "'"
 $ WC "d_memchr='" + d_memchr + "'"
-$ WC "d_memcmp='define'"
 $ WC "d_memmem='undef'"
 $ WC "d_memrchr='" + d_memrchr + "'"
 $ WC "d_mkdir='define'"
@@ -6306,7 +6303,6 @@ $ WC "d_rewinddir='define'"
 $ WC "d_rint='" + d_rint + "'"
 $ WC "d_rmdir='define'"
 $ WC "d_round='undef'"
-$ WC "d_sanemcmp='define'"
 $ WC "d_sbrkproto='define'"
 $ WC "d_scalbn='undef'"
 $ WC "d_scalbnl='undef'"
index f0c7f7f..b87c5dd 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -1063,9 +1063,6 @@ Anp       |void   |atfork_lock
 Anp    |void   |atfork_unlock
 Apmb   |I32    |my_lstat
 pX     |I32    |my_lstat_flags |NULLOK const U32 flags
-#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
-AnpP   |int    |my_memcmp      |NN const void* vs1|NN const void* vs2|size_t len
-#endif
 #if !defined(PERL_IMPLICIT_SYS)
 Ap     |I32    |my_pclose      |NULLOK PerlIO* ptr
 Ap     |PerlIO*|my_popen       |NN const char* cmd|NN const char* mode
diff --git a/embed.h b/embed.h
index 180ca39..34dd4fa 100644 (file)
--- a/embed.h
+++ b/embed.h
 #if !(defined(HAS_SIGACTION) && defined(SA_SIGINFO))
 #define csighandler            Perl_csighandler
 #endif
-#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
-#define my_memcmp              Perl_my_memcmp
-#endif
 #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
 #define my_chsize(a,b)         Perl_my_chsize(aTHX_ a,b)
 #endif
index adc0f95..1c1151a 100644 (file)
@@ -204,42 +204,12 @@ Free_t   Perl_mfree proto((Malloc_t where));
 
 #define memzero(d,l) memset(d,0,l)
 
-#if defined(mips) && defined(ultrix) && !defined(__STDC__)
-#   undef HAS_MEMCMP
+#ifdef BUGGY_MSC
+#  pragma function(memcmp)
 #endif
 
-#if defined(HAS_MEMCMP) && defined(HAS_SANE_MEMCMP)
-#  if !defined(STANDARD_C) && !defined(I_STRING) && !defined(I_MEMORY)
-#    ifndef memcmp
-       extern int memcmp proto((char*, char*, int));
-#    endif
-#  endif
-#  ifdef BUGGY_MSC
-#    pragma function(memcmp)
-#  endif
-#else
-#   ifndef memcmp
-       /* maybe we should have included the full embedding header... */
-#      define memcmp Perl_my_memcmp
-#ifndef __cplusplus
-       extern int memcmp proto((char*, char*, int));
-#endif
-#   endif
-#endif /* HAS_MEMCMP */
-
-#ifndef HAS_BCMP
-#   ifndef bcmp
-#      define bcmp(s1,s2,l) memcmp(s1,s2,l)
-#   endif
-#endif /* !HAS_BCMP */
-
-#ifdef HAS_MEMCMP
-#  define memNE(s1,s2,l) (memcmp(s1,s2,l))
-#  define memEQ(s1,s2,l) (!memcmp(s1,s2,l))
-#else
-#  define memNE(s1,s2,l) (bcmp(s1,s2,l))
-#  define memEQ(s1,s2,l) (!bcmp(s1,s2,l))
-#endif
+#define memNE(s1,s2,l) (memcmp(s1,s2,l))
+#define memEQ(s1,s2,l) (!memcmp(s1,s2,l))
 
 #ifdef I_NETINET_IN
 #  ifdef VMS
diff --git a/handy.h b/handy.h
index 0f31e57..446dba9 100644 (file)
--- a/handy.h
+++ b/handy.h
@@ -493,13 +493,8 @@ Returns zero if non-equal, or non-zero if equal.
 #define strEQs(s1,s2) (!strncmp(s1,"" s2 "", sizeof(s2)-1))
 #endif
 
-#ifdef HAS_MEMCMP
-#  define memNE(s1,s2,l) (memcmp(s1,s2,l))
-#  define memEQ(s1,s2,l) (!memcmp(s1,s2,l))
-#else
-#  define memNE(s1,s2,l) (bcmp(s1,s2,l))
-#  define memEQ(s1,s2,l) (!bcmp(s1,s2,l))
-#endif
+#define memNE(s1,s2,l) (memcmp(s1,s2,l))
+#define memEQ(s1,s2,l) (!memcmp(s1,s2,l))
 
 /* memEQ and memNE where second comparand is a string constant */
 #define memEQs(s1, l, s2) \
index 14b56ad..8967f03 100644 (file)
@@ -55,7 +55,6 @@ libswanted=`echo " $libswanted " | sed -e 's/ malloc / /'` # -e 's/ ucb / /'`
 #   it is needed for ODBM_File and NDBM_File extensions.
 if [ -r /usr/ucblib/libucb.a ]; then   # If using BSD-compat. library:
     # Use the "native" counterparts, not the BSD emulation stuff:
-    d_bcmp='undef';
     d_index='undef'; d_killpg='undef'; d_getprior='undef'; d_setprior='undef'
     d_setlinebuf='undef'; d_setregid='undef'; d_setreuid='undef'
 fi
index 80fc9a9..756dfcd 100644 (file)
@@ -25,7 +25,6 @@ libswanted=`echo " $libswanted " | sed -e 's/ malloc / /'` # -e 's/ ucb / /'`
 if [ -r /usr/ucblib/libucb.a ]; then   # If using BSD-compat. library:
     gconvert_preference='gcvt sprintf' # Try gcvt() before gconvert().
     # Use the "native" counterparts, not the BSD emulation stuff:
-    d_bcmp='undef'
     d_index='undef' d_killpg='undef' d_getprior='undef' d_setprior='undef'
     d_setlinebuf='undef' 
     # d_setregid='undef' d_setreuid='undef'  # ???
index aeb673a..45a8b71 100644 (file)
@@ -92,7 +92,6 @@ glibpth=`echo " $glibpth " | sed -e 's/ \/shlib / /' -e 's/ \/lib / /'`
 # Don't use BSD emulation pieces (/usr/ucblib) regardless
 # these would probably be autonondetected anyway but ...
 gconvert_preference='gcvt sprintf'     # Try gcvt() before gconvert().
-d_bcmp='undef' 
 d_index='undef' d_killpg='undef' d_getprior='undef' d_setprior='undef'
 d_setlinebuf='undef' 
 d_setregid='undef' d_setreuid='undef'  # -- in /usr/lib/libc.so.1
diff --git a/perl.h b/perl.h
index fe25976..fd0c222 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -1001,21 +1001,6 @@ EXTERN_C int usleep(unsigned int);
 #  include <memory.h>
 #endif
 
-#if defined(mips) && defined(ultrix) && !defined(__STDC__)
-#   undef HAS_MEMCMP
-#endif
-
-#if defined(HAS_MEMCMP) && defined(HAS_SANE_MEMCMP)
-#  if !defined(STANDARD_C) && !defined(I_STRING) && !defined(I_MEMORY)
-#    ifndef memcmp
-       extern int memcmp (char*, char*, int);
-#    endif
-#  endif
-#else
-#   undef memcmp
-#   define memcmp   my_memcmp
-#endif /* HAS_MEMCMP && HAS_SANE_MEMCMP */
-
 #ifndef memzero
 #   define memzero(d,l) memset(d,0,l)
 #endif
@@ -1028,12 +1013,6 @@ EXTERN_C int usleep(unsigned int);
 #endif
 #endif
 
-#ifndef HAS_BCMP
-#   ifndef bcmp
-#      define bcmp(s1,s2,l) memcmp(s1,s2,l)
-#   endif
-#endif /* !HAS_BCMP */
-
 #ifdef I_NETINET_IN
 #   include <netinet/in.h>
 #endif
index 8ae0aff..8a27067 100644 (file)
 #define __attribute__(_arg_)
 #endif
 
-/* HAS_BCMP:
- *     This symbol is defined if the bcmp() routine is available to
- *     compare blocks of memory.
- */
-#define HAS_BCMP       /**/
-
 /* HAS_CHOWN:
  *     This symbol, if defined, indicates that the chown routine is
  *     available.
  */
 #define HAS_MBTOWC             /**/
 
-/* HAS_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     to compare blocks of memory.
- */
-#define HAS_MEMCMP     /**/
-
 /* HAS_MKDIR:
  *     This symbol, if defined, indicates that the mkdir routine is available
  *     to create directories.  Otherwise you should fork off a new process to
  */
 /*#define HAS_RECVMSG          / **/
 
-/* HAS_SANE_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     and can be used to compare relative magnitudes of chars with their high
- *     bits set.  If it is not defined, roll your own version.
- */
-#define HAS_SANE_MEMCMP        /**/
-
 /* HAS_SBRK_PROTO:
  *     This symbol, if defined, indicates that the system provides
  *     a prototype for the sbrk() function.  Otherwise, it is up
index 902eba4..d288411 100644 (file)
 #define __attribute__(_arg_)
 #endif
 
-/* HAS_BCMP:
- *     This symbol is defined if the bcmp() routine is available to
- *     compare blocks of memory.
- */
-#define HAS_BCMP       /**/
-
 /* HAS_CHOWN:
  *     This symbol, if defined, indicates that the chown routine is
  *     available.
  */
 #define HAS_MBTOWC             /**/
 
-/* HAS_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     to compare blocks of memory.
- */
-#define HAS_MEMCMP     /**/
-
 /* HAS_MKDIR:
  *     This symbol, if defined, indicates that the mkdir routine is available
  *     to create directories.  Otherwise you should fork off a new process to
  */
 /*#define HAS_RECVMSG          / **/
 
-/* HAS_SANE_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     and can be used to compare relative magnitudes of chars with their high
- *     bits set.  If it is not defined, roll your own version.
- */
-#define HAS_SANE_MEMCMP        /**/
-
 /* HAS_SBRK_PROTO:
  *     This symbol, if defined, indicates that the system provides
  *     a prototype for the sbrk() function.  Otherwise, it is up
index 3f10f59..485a662 100644 (file)
@@ -125,7 +125,6 @@ d_attribute_pure='undef'
 d_attribute_unused='undef'
 d_attribute_warn_unused_result='undef'
 d_backtrace='undef'
-d_bcmp='define'
 d_bsd='undef'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
@@ -380,7 +379,6 @@ d_mbrtowc='undef'
 d_mbstowcs='define'
 d_mbtowc='define'
 d_memchr='define'
-d_memcmp='define'
 d_memmem='undef'
 d_memrchr='undef'
 d_mkdir='define'
@@ -469,7 +467,6 @@ d_rewinddir='define'
 d_rint='undef'
 d_rmdir='define'
 d_round='undef'
-d_sanemcmp='define'
 d_sbrkproto='undef'
 d_scalbn='undef'
 d_scalbnl='undef'
diff --git a/proto.h b/proto.h
index fb36ae8..4e5021c 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -3827,14 +3827,6 @@ PERL_CALLCONV char*      Perl_getenv_len(pTHX_ const char *env_elem, unsigned long *l
 #define PERL_ARGS_ASSERT_GETENV_LEN    \
        assert(env_elem); assert(len)
 #endif
-#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
-PERL_CALLCONV int      Perl_my_memcmp(const void* vs1, const void* vs2, size_t len)
-                       __attribute__warn_unused_result__
-                       __attribute__pure__;
-#define PERL_ARGS_ASSERT_MY_MEMCMP     \
-       assert(vs1); assert(vs2)
-
-#endif
 #if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
 #  if defined(PERL_IN_PP_SYS_C)
 STATIC int     S_dooneliner(pTHX_ const char *cmd, const char *filename)
index d980747..f33d657 100644 (file)
@@ -69,7 +69,6 @@ d_attribute_pure='undef'
 d_attribute_unused='undef'
 d_attribute_warn_unused_result='undef'
 d_backtrace='undef'
-d_bcmp='undef'
 d_bsd='undef'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
@@ -326,7 +325,6 @@ d_mbrtowc='undef'
 d_mbstowcs='undef'
 d_mbtowc='undef'
 d_memchr='define'
-d_memcmp='define'
 d_memmem='undef'
 d_memrchr='undef'
 d_mkdir='define'
@@ -415,7 +413,6 @@ d_rewinddir='define'
 d_rint='undef'
 d_rmdir='define'
 d_round='undef'
-d_sanemcmp='undef'
 d_sbrkproto='undef'
 d_scalbn='undef'
 d_scalbnl='undef'
index be77505..cc68790 100644 (file)
--- a/uconfig.h
+++ b/uconfig.h
  */
 /*#define HAS_ALARM            / **/
 
-/* HAS_BCMP:
- *     This symbol is defined if the bcmp() routine is available to
- *     compare blocks of memory.
- */
-/*#define HAS_BCMP     / **/
-
 /* HAS_CBRT:
  *     This symbol, if defined, indicates that the cbrt() (cube root)
  *     function is available.
  */
 /*#define HAS_MBTOWC           / **/
 
-/* HAS_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     to compare blocks of memory.
- */
-#define HAS_MEMCMP     /**/
-
 /* HAS_MKDIR:
  *     This symbol, if defined, indicates that the mkdir routine is available
  *     to create directories.  Otherwise you should fork off a new process to
  */
 /*#define HAS_OPEN3            / **/
 
-/* HAS_SANE_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     and can be used to compare relative magnitudes of chars with their high
- *     bits set.  If it is not defined, roll your own version.
- */
-/*#define HAS_SANE_MEMCMP      / **/
-
 /* HAS_SIGACTION:
  *     This symbol, if defined, indicates that Vr4's sigaction() routine
  *     is available.
 #endif
 
 /* Generated from:
- * 1cf368f3ea2fec4f94f386fdea4cdeeaa97c85016d4890593bf9f9883b0efddd config_h.SH
- * 0aaf1bf7863e3a8c2c9ebd5150ba593f980e174203d159deac8f83b981da6037 uconfig.sh
+ * 53d2d4cc7acf8d0b0b04606f10f9ad2405b078be305d3ad5e57aa2fa5954c9d6 config_h.SH
+ * da0fc52cf0e7a996baafbaa4d6cfaa06229ec4a84f23e80dfdbf97d4e73eb2c8 uconfig.sh
  * ex: set ro: */
index 61708e6..c60abcf 100644 (file)
@@ -63,7 +63,6 @@ d_attribute_pure='undef'
 d_attribute_unused='undef'
 d_attribute_warn_unused_result='undef'
 d_backtrace='undef'
-d_bcmp='undef'
 d_bsd='undef'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
@@ -319,7 +318,6 @@ d_mbrtowc='undef'
 d_mbstowcs='undef'
 d_mbtowc='undef'
 d_memchr='define'
-d_memcmp='define'
 d_memmem='undef'
 d_memrchr='undef'
 d_mkdir='undef'
@@ -408,7 +406,6 @@ d_rewinddir='undef'
 d_rint='undef'
 d_rmdir='undef'
 d_round='undef'
-d_sanemcmp='undef'
 d_sbrkproto='undef'
 d_scalbn='undef'
 d_scalbnl='undef'
index 108719e..1489d72 100644 (file)
@@ -64,7 +64,6 @@ d_attribute_pure='undef'
 d_attribute_unused='undef'
 d_attribute_warn_unused_result='undef'
 d_backtrace='undef'
-d_bcmp='undef'
 d_bsd='undef'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
@@ -320,7 +319,6 @@ d_mbrtowc='undef'
 d_mbstowcs='undef'
 d_mbtowc='undef'
 d_memchr='define'
-d_memcmp='define'
 d_memmem='undef'
 d_memrchr='undef'
 d_mkdir='undef'
@@ -409,7 +407,6 @@ d_rewinddir='undef'
 d_rint='undef'
 d_rmdir='undef'
 d_round='undef'
-d_sanemcmp='undef'
 d_sbrkproto='undef'
 d_scalbn='undef'
 d_scalbnl='undef'
diff --git a/util.c b/util.c
index 488a424..fd2d306 100644 (file)
--- a/util.c
+++ b/util.c
@@ -2223,25 +2223,6 @@ Perl_unlnk(pTHX_ const char *f)  /* unlink all versions of a file */
 }
 #endif
 
-/* this is a drop-in replacement for memcmp() */
-#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
-int
-Perl_my_memcmp(const void *vs1, const void *vs2, size_t len)
-{
-    const U8 *a = (const U8 *)vs1;
-    const U8 *b = (const U8 *)vs2;
-    int tmp;
-
-    PERL_ARGS_ASSERT_MY_MEMCMP;
-
-    while (len--) {
-        if ((tmp = *a++ - *b++))
-           return tmp;
-    }
-    return 0;
-}
-#endif /* !HAS_MEMCMP || !HAS_SANE_MEMCMP */
-
 #ifndef HAS_VPRINTF
 /* This vsprintf replacement should generally never get used, since
    vsprintf was available in both System V and BSD 2.11.  (There may
index 252253d..446f24c 100644 (file)
@@ -110,7 +110,6 @@ d_attribute_pure='undef'
 d_attribute_unused='undef'
 d_attribute_warn_unused_result='undef'
 d_backtrace='undef'
-d_bcmp='undef'
 d_bsd='define'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
@@ -367,7 +366,6 @@ d_mbrtowc='undef'
 d_mbstowcs='define'
 d_mbtowc='define'
 d_memchr='define'
-d_memcmp='define'
 d_memmem='undef'
 d_memrchr='undef'
 d_mkdir='define'
@@ -456,7 +454,6 @@ d_rewinddir='define'
 d_rint='undef'
 d_rmdir='define'
 d_round='undef'
-d_sanemcmp='define'
 d_sbrkproto='undef'
 d_scalbn='undef'
 d_scalbnl='undef'
index 1485088..fbb315b 100644 (file)
@@ -112,7 +112,6 @@ d_attribute_pure='undef'
 d_attribute_unused='undef'
 d_attribute_warn_unused_result='undef'
 d_backtrace='undef'
-d_bcmp='undef'
 d_bsd='define'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
@@ -367,7 +366,6 @@ d_mbrtowc='undef'
 d_mbstowcs='define'
 d_mbtowc='define'
 d_memchr='define'
-d_memcmp='define'
 d_memmem='undef'
 d_memrchr='undef'
 d_mkdir='define'
@@ -457,7 +455,6 @@ d_rewinddir='define'
 d_rint='undef'
 d_rmdir='define'
 d_round='undef'
-d_sanemcmp='define'
 d_sbrkproto='undef'
 d_scalbn='undef'
 d_scalbnl='undef'
index ce9b898..d51d500 100644 (file)
@@ -112,7 +112,6 @@ d_attribute_pure='undef'
 d_attribute_unused='undef'
 d_attribute_warn_unused_result='undef'
 d_backtrace='undef'
-d_bcmp='undef'
 d_bsd='define'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
@@ -367,7 +366,6 @@ d_mbrtowc='undef'
 d_mbstowcs='define'
 d_mbtowc='define'
 d_memchr='define'
-d_memcmp='define'
 d_memmem='undef'
 d_memrchr='undef'
 d_mkdir='define'
@@ -457,7 +455,6 @@ d_rewinddir='define'
 d_rint='undef'
 d_rmdir='define'
 d_round='undef'
-d_sanemcmp='define'
 d_sbrkproto='undef'
 d_scalbn='undef'
 d_scalbnl='undef'
index 828b556..31af04d 100644 (file)
  */
 /*#define HAS_ALARM            /**/
 
-/* HAS_BCMP:
- *     This symbol is defined if the bcmp() routine is available to
- *     compare blocks of memory.
- */
-/*#define HAS_BCMP     /**/
-
 /* HAS_CHOWN:
  *     This symbol, if defined, indicates that the chown routine is
  *     available.
  */
 #define HAS_MBTOWC             /**/
 
-/* HAS_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     to compare blocks of memory.
- */
-#define HAS_MEMCMP     /**/
-
 /* HAS_MKDIR:
  *     This symbol, if defined, indicates that the mkdir routine is available
  *     to create directories.  Otherwise you should fork off a new process to
  */
 /*#define HAS_RECVMSG          /**/
 
-/* HAS_SANE_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     and can be used to compare relative magnitudes of chars with their high
- *     bits set.  If it is not defined, roll your own version.
- */
-#define HAS_SANE_MEMCMP        /**/
-
 /* HAS_SBRK_PROTO:
  *     This symbol, if defined, indicates that the system provides
  *     a prototype for the sbrk() function.  Otherwise, it is up
index 6672dbb..e49124a 100644 (file)
  */
 #define HAS_ALARM              /**/
 
-/* HAS_BCMP:
- *     This symbol is defined if the bcmp() routine is available to
- *     compare blocks of memory.
- */
-/*#define HAS_BCMP     / **/
-
 /* HAS_CBRT:
  *     This symbol, if defined, indicates that the cbrt() (cube root)
  *     function is available.
  */
 #define HAS_MBTOWC             /**/
 
-/* HAS_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     to compare blocks of memory.
- */
-#define HAS_MEMCMP     /**/
-
 /* HAS_MKDIR:
  *     This symbol, if defined, indicates that the mkdir routine is available
  *     to create directories.  Otherwise you should fork off a new process to
  */
 /*#define HAS_OPEN3            / **/
 
-/* HAS_SANE_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     and can be used to compare relative magnitudes of chars with their high
- *     bits set.  If it is not defined, roll your own version.
- */
-#define HAS_SANE_MEMCMP        /**/
-
 /* HAS_SIGACTION:
  *     This symbol, if defined, indicates that Vr4's sigaction() routine
  *     is available.
index ff0f0d7..3691588 100644 (file)
  */
 #define HAS_ALARM              /**/
 
-/* HAS_BCMP:
- *     This symbol is defined if the bcmp() routine is available to
- *     compare blocks of memory.
- */
-/*#define HAS_BCMP     / **/
-
 /* HAS_CBRT:
  *     This symbol, if defined, indicates that the cbrt() (cube root)
  *     function is available.
  */
 #define HAS_MBTOWC             /**/
 
-/* HAS_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     to compare blocks of memory.
- */
-#define HAS_MEMCMP     /**/
-
 /* HAS_MKDIR:
  *     This symbol, if defined, indicates that the mkdir routine is available
  *     to create directories.  Otherwise you should fork off a new process to
  */
 /*#define HAS_OPEN3            / **/
 
-/* HAS_SANE_MEMCMP:
- *     This symbol, if defined, indicates that the memcmp routine is available
- *     and can be used to compare relative magnitudes of chars with their high
- *     bits set.  If it is not defined, roll your own version.
- */
-#define HAS_SANE_MEMCMP        /**/
-
 /* HAS_SIGACTION:
  *     This symbol, if defined, indicates that Vr4's sigaction() routine
  *     is available.