This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Rely on C89 <stdarg.h>
authorAaron Crane <arc@cpan.org>
Thu, 12 Oct 2017 22:55:41 +0000 (00:55 +0200)
committerAaron Crane <arc@cpan.org>
Sat, 21 Oct 2017 15:52:33 +0000 (16:52 +0100)
27 files changed:
Configure
Cross/config.sh-arm-linux
Cross/config.sh-arm-linux-n770
INSTALL
MANIFEST
NetWare/config.wc
NetWare/config_H.wc
Porting/Glossary
Porting/config.sh
Porting/config_H
cflags.SH
config_h.SH
configure.com
hints/genix.sh [deleted file]
perl.h
plan9/config.plan9
plan9/config_h.sample
plan9/config_sh.sample
uconfig.h
uconfig.sh
uconfig64.sh
win32/config.ce
win32/config.gc
win32/config.vc
win32/config_H.ce
win32/config_H.gc
win32/config_H.vc

index 919220b..703bfbe 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -1078,9 +1078,6 @@ i_unistd=''
 i_ustat=''
 i_utime=''
 i_values=''
-i_stdarg=''
-i_varargs=''
-i_varhdr=''
 i_vfork=''
 i_wchar=''
 d_inc_version_list=''
@@ -23279,115 +23276,6 @@ set i_termio; eval $setvar
 val=$val2; set i_sgtty; eval $setvar
 val=$val3; set i_termios; eval $setvar
 
-: see if stdarg is available
-echo " "
-if $test `./findhdr stdarg.h`; then
-       echo "<stdarg.h> found." >&4
-       valstd="$define"
-else
-       echo "<stdarg.h> NOT found." >&4
-       valstd="$undef"
-fi
-
-: see if varargs is available
-echo " "
-if $test `./findhdr varargs.h`; then
-       echo "<varargs.h> found." >&4
-else
-       echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
-fi
-
-: set up the varargs testing programs
-$cat > varargs.c <<EOP
-#ifdef I_STDARG
-#include <stdarg.h>
-#endif
-#ifdef I_VARARGS
-#include <varargs.h>
-#endif
-
-#ifdef I_STDARG
-int f(char *p, ...)
-#else
-int f(va_alist)
-va_dcl
-#endif
-{
-       va_list ap;
-#ifndef I_STDARG
-       char *p;
-#endif
-#ifdef I_STDARG
-       va_start(ap,p);
-#else
-       va_start(ap);
-       p = va_arg(ap, char *);
-#endif
-       va_end(ap);
-       return 0;
-}
-EOP
-$cat > varargs <<EOP
-$startsh
-if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
-       echo "true"
-else
-       echo "false"
-fi
-$rm -f varargs$_o
-EOP
-chmod +x varargs
-
-: now check which varargs header should be included
-echo " "
-i_varhdr=''
-val=''
-case "$valstd" in
-"$define")
-       if `./varargs I_STDARG`; then
-               val='stdarg.h'
-       elif `./varargs I_VARARGS`; then
-               val='varargs.h'
-       fi
-       ;;
-*)
-       if `./varargs I_VARARGS`; then
-               val='varargs.h'
-       fi
-       ;;
-esac
-case "$val" in
-'')
-       echo " "
-       echo "*** WHOA THERE!!! ***" >&4
-       echo "    Your C compiler \"$cc\" doesn't seem to support stdarg or varargs!" >&4
-       case "$knowitall" in
-       '')
-       echo "    I'm giving up; maybe you can try again with a different compiler?" >&4
-               exit 1
-               ;;
-       esac
-echo "I could not find the definition for va_dcl... You have problems..." >&4
-       val="$undef"; set i_stdarg; eval $setvar
-       val="$undef"; set i_varargs; eval $setvar
-       ;;
-*)
-       set i_varhdr
-       eval $setvar
-       case "$i_varhdr" in
-       stdarg.h)
-               val="$define"; set i_stdarg; eval $setvar
-               val="$undef"; set i_varargs; eval $setvar
-               ;;
-       varargs.h)
-               val="$undef"; set i_stdarg; eval $setvar
-               val="$define"; set i_varargs; eval $setvar
-               ;;
-       esac
-       echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
-esac
-$rm -f varargs*
-
 : see if stdbool is available
 : we want a real compile instead of Inhdr because some Solaris systems
 : have stdbool.h, but it can only be used if the compiler indicates it
@@ -24821,7 +24709,6 @@ i_rpcsvcdbm='$i_rpcsvcdbm'
 i_sgtty='$i_sgtty'
 i_shadow='$i_shadow'
 i_socks='$i_socks'
-i_stdarg='$i_stdarg'
 i_stdbool='$i_stdbool'
 i_stddef='$i_stddef'
 i_stdint='$i_stdint'
@@ -24864,8 +24751,6 @@ i_unistd='$i_unistd'
 i_ustat='$i_ustat'
 i_utime='$i_utime'
 i_values='$i_values'
-i_varargs='$i_varargs'
-i_varhdr='$i_varhdr'
 i_vfork='$i_vfork'
 i_wchar='$i_wchar'
 i_xlocale='$i_xlocale'
index aac1221..80cfbec 100644 (file)
@@ -772,7 +772,6 @@ i_rpcsvcdbm='undef'
 i_sgtty='undef'
 i_shadow='define'
 i_socks='undef'
-i_stdarg='define'
 i_stdbool='undef'
 i_stddef='define'
 i_stdint='define'
@@ -815,8 +814,6 @@ i_unistd='define'
 i_ustat='define'
 i_utime='define'
 i_values='define'
-i_varargs='undef'
-i_varhdr='stdarg.h'
 i_vfork='undef'
 i_wchar='undef'
 i_xlocale='undef'
index a9e9c24..95c653f 100644 (file)
@@ -632,7 +632,6 @@ i_rpcsvcdbm='undef'
 i_sgtty='undef'
 i_shadow='define'
 i_socks='undef'
-i_stdarg='define'
 i_stddef='define'
 i_stdlib='define'
 i_string='define'
@@ -673,8 +672,6 @@ i_unistd='define'
 i_ustat='define'
 i_utime='define'
 i_values='define'
-i_varargs='undef'
-i_varhdr='stdarg.h'
 i_vfork='undef'
 ignore_versioned_solibs='y'
 inc_version_list=' '
diff --git a/INSTALL b/INSTALL
index 50d4f23..636f4bd 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1532,27 +1532,6 @@ PERL5LIB, and PERL5OPT will influence the behaviour of the test suite.
 So if you are getting strange test failures, you may want to try
 retesting with the various PERL variables unset.
 
-=item varargs
-
-If you get varargs problems with gcc, be sure that gcc is installed
-correctly and that you are not passing -I/usr/include to gcc.  When using
-gcc, you should probably have i_stdarg='define' and i_varargs='undef'
-in config.sh.  The problem is usually solved by installing gcc
-correctly.  If you do change config.sh, don't forget to propagate
-your changes (see L<"Propagating your changes to config.sh"> below).
-
-=item util.c
-
-If you get error messages such as the following (the exact line
-numbers and function name may vary in different versions of perl):
-
-    util.c: In function 'Perl_form':
-    util.c:1107: number of arguments doesn't match prototype
-    proto.h:125: prototype declaration
-
-it might well be a symptom of the gcc "varargs problem".  See the
-previous L<"varargs"> item.
-
 =item LD_LIBRARY_PATH
 
 If you run into dynamic loading problems, check your setting of
index ba6c6e1..ffbaa3d 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -4452,7 +4452,6 @@ hints/esix4.sh                    Hints for named architecture
 hints/fps.sh                   Hints for named architecture
 hints/freebsd.sh               Hints for named architecture
 hints/freemint.sh              Hints for named architecture
-hints/genix.sh                 Hints for named architecture
 hints/gnu.sh                   Hints for named architecture
 hints/gnukfreebsd.sh           Hints for named architecture
 hints/gnuknetbsd.sh            Hints for named architecture
index 8e3b475..8a6df03 100644 (file)
@@ -754,7 +754,6 @@ i_rpcsvcdbm='define'
 i_sgtty='undef'
 i_shadow='undef'
 i_socks='undef'
-i_stdarg='define'
 i_stdbool='define'
 i_stddef='define'
 i_stdint='undef'
@@ -797,8 +796,6 @@ i_unistd='undef'
 i_ustat='undef'
 i_utime='define'
 i_values='undef'
-i_varargs='undef'
-i_varhdr='varargs.h'
 i_vfork='undef'
 i_wchar='undef'
 i_xlocale='undef'
index a25166b..8598a5a 100644 (file)
 /*#define SETUID_SCRIPTS_ARE_SECURE_NOW        /**/
 /*#define DOSUID               /**/
 
-/* I_STDARG:
- *     This symbol, if defined, indicates that <stdarg.h> exists and should
- *     be included.
- */
-/* I_VARARGS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <varargs.h>.
- */
-#define I_STDARG               /**/
-/*#define I_VARARGS    /**/
-
 /* USE_CROSS_COMPILE:
  *     This symbol, if defined, indicates that Perl is being cross-compiled.
  */
index b462f20..df598c0 100644 (file)
@@ -3601,11 +3601,6 @@ i_socks (i_socks.U):
        This variable conditionally defines the I_SOCKS symbol, and indicates
        whether a C program should include <socks.h>.
 
-i_stdarg (i_varhdr.U):
-       This variable conditionally defines the I_STDARG symbol, which
-       indicates to the C program that <stdarg.h> exists and should
-       be included.
-
 i_stdbool (i_stdbool.U):
        This variable conditionally defines the I_STDBOOL symbol, which
        indicates to the C program that <stdbool.h> exists and should
@@ -3788,14 +3783,6 @@ i_values (i_values.U):
        whether a C program may include <values.h> to get symbols like MAXLONG
        and friends.
 
-i_varargs (i_varhdr.U):
-       This variable conditionally defines I_VARARGS, which indicates
-       to the C program that it should include <varargs.h>.
-
-i_varhdr (i_varhdr.U):
-       Contains the name of the header to be included to get va_dcl definition.
-       Typically one of varargs.h or stdarg.h.
-
 i_vfork (i_vfork.U):
        This variable conditionally defines the I_VFORK symbol, and indicates
        whether a C program should include vfork.h.
index d534584..a67c756 100644 (file)
@@ -790,7 +790,6 @@ i_rpcsvcdbm='undef'
 i_sgtty='undef'
 i_shadow='undef'
 i_socks='undef'
-i_stdarg='define'
 i_stdbool='define'
 i_stddef='define'
 i_stdint='define'
@@ -833,8 +832,6 @@ i_unistd='define'
 i_ustat='undef'
 i_utime='define'
 i_values='undef'
-i_varargs='undef'
-i_varhdr='stdarg.h'
 i_vfork='undef'
 i_wchar='undef'
 i_xlocale='define'
index 564848b..97622ad 100644 (file)
  */
 #define        I_SYSUIO                /**/
 
-/* I_STDARG:
- *     This symbol, if defined, indicates that <stdarg.h> exists and should
- *     be included.
- */
-/* I_VARARGS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <varargs.h>.
- */
-#define I_STDARG               /**/
-/*#define I_VARARGS    / **/
-
 /* Free_t:
  *     This variable contains the return type of free().  It is usually
  * void, but occasionally int.
index c9b34e0..dc373c7 100755 (executable)
--- a/cflags.SH
+++ b/cflags.SH
@@ -79,9 +79,7 @@ cat >_cflags.c <<__EOT__
 #ifdef I_STDDEF
 #include <stddef.h>
 #endif
-#ifdef I_STDARG
 #include <stdarg.h>
-#endif
 #ifdef I_LIMITS
 #include <limits.h>
 #endif
index 812fd02..a8c9672 100755 (executable)
@@ -2292,17 +2292,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
 #$i_termios I_TERMIOS          /**/
 #$i_sgtty I_SGTTY              /**/
 
-/* I_STDARG:
- *     This symbol, if defined, indicates that <stdarg.h> exists and should
- *     be included.
- */
-/* I_VARARGS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <varargs.h>.
- */
-#$i_stdarg I_STDARG            /**/
-#$i_varargs I_VARARGS  /**/
-
 /* Free_t:
  *     This variable contains the return type of free().  It is usually
  * void, but occasionally int.
index 9f46366..19b62c9 100644 (file)
@@ -6579,7 +6579,6 @@ $ WC "i_rpcsvcdbm='undef'"
 $ WC "i_sgtty='undef'"
 $ WC "i_shadow='" + i_shadow + "'"
 $ WC "i_socks='" + i_socks + "'"
-$ WC "i_stdarg='define'"
 $ IF ccname .EQS. "DEC" .AND. F$INTEGER(Dec_C_Version).GE.60400000
 $ THEN
 $   WC "i_stdbool='define'"
@@ -6627,8 +6626,6 @@ $ WC "i_unistd='" + i_unistd + "'"
 $ WC "i_ustat='undef'"
 $ WC "i_utime='" + i_utime + "'"
 $ WC "i_values='undef'"
-$ WC "i_varargs='undef'"
-$ WC "i_varhdr='stdarg.h'"
 $ WC "i_vfork='undef'"
 $ WC "i_wchar='undef'"
 $ WC "i_xlocale='undef'"
diff --git a/hints/genix.sh b/hints/genix.sh
deleted file mode 100644 (file)
index 16b6879..0000000
+++ /dev/null
@@ -1 +0,0 @@
-i_varargs=undef
diff --git a/perl.h b/perl.h
index d3ed6ae..ce883d3 100644 (file)
--- a/perl.h
+++ b/perl.h
 
 #include <sys/types.h>
 
-#ifdef __cplusplus
-#  ifndef I_STDARG
-#    define I_STDARG 1
-#  endif
-#endif
-
 /* EVC 4 SDK headers includes a bad definition of MB_CUR_MAX in stdlib.h
   which is included from stdarg.h. Bad definition not present in SD 2008
   SDK headers. wince.h is not yet included, so we cant fix this from there
 #if defined(UNDER_CE) && (_MSC_VER < 1300)
 #  define MB_CUR_MAX 1
 #endif
-#ifdef I_STDARG
-#  include <stdarg.h>
-#else
-#  ifdef I_VARARGS
-#    include <varargs.h>
-#  endif
-#endif
+
+# include <stdarg.h>
 
 #ifdef I_STDINT
 # include <stdint.h>
index 1be10e8..0fcfa82 100644 (file)
  */
 /*#define I_NDBM       / **/
 
-/* I_STDARG:
- *     This symbol, if defined, indicates that <stdarg.h> exists and should
- *     be included.
- */
-/* I_VARARGS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <varargs.h>.
- */
-#define I_STDARG               /**/
-/*#define I_VARARGS    / **/
-
 /* SH_PATH:
  *     This symbol contains the full pathname to the shell used on this
  *     on this system to execute Bourne shell scripts.  Usually, this will be
index cd44e99..bd88610 100644 (file)
  */
 /*#define I_NDBM       / **/
 
-/* I_STDARG:
- *     This symbol, if defined, indicates that <stdarg.h> exists and should
- *     be included.
- */
-/* I_VARARGS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <varargs.h>.
- */
-#define I_STDARG               /**/
-/*#define I_VARARGS    / **/
-
 /* SH_PATH:
  *     This symbol contains the full pathname to the shell used on this
  *     on this system to execute Bourne shell scripts.  Usually, this will be
index f0f38fc..8f14477 100644 (file)
@@ -766,7 +766,6 @@ i_rpcsvcdbm='undef'
 i_sgtty='undef'
 i_shadow='undef'
 i_socks='undef'
-i_stdarg='define'
 i_stdbool='undef'
 i_stddef='define'
 i_stdint='undef'
@@ -809,8 +808,6 @@ i_unistd='define'
 i_ustat='undef'
 i_utime='define'
 i_values='undef'
-i_varargs='undef'
-i_varhdr='stdarg.h'
 i_vfork='undef'
 i_wchar='undef'
 i_xlocale='undef'
index df2e69d..0755da1 100644 (file)
--- a/uconfig.h
+++ b/uconfig.h
 /*#define I_TERMIOS            / **/
 /*#define I_SGTTY              / **/
 
-/* I_STDARG:
- *     This symbol, if defined, indicates that <stdarg.h> exists and should
- *     be included.
- */
-/* I_VARARGS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <varargs.h>.
- */
-#define I_STDARG               /**/
-/*#define I_VARARGS    / **/
-
 /* Free_t:
  *     This variable contains the return type of free().  It is usually
  * void, but occasionally int.
 #endif
 
 /* Generated from:
- * 6c763f32474aeeec2af78bc744f36dcb8ec9c9cad13e888b624596dc4f0efb08 config_h.SH
- * 51a3d2a1b0cd9329ef5b65d93eca04f6f0769a86b8c16db672fda17ea1308fd3 uconfig.sh
+ * 9ac22558a2db3bead054c2b016d0b70095e52fce40430a65015f21cd91dcc943 config_h.SH
+ * 408e88881e8a567afeba7b56cb949d7886e8473896575932bfdef72ee9c32249 uconfig.sh
  * ex: set ro: */
index c39cb81..a3a955c 100644 (file)
@@ -680,7 +680,6 @@ i_rpcsvcdbm='undef'
 i_sgtty='undef'
 i_shadow='undef'
 i_socks='undef'
-i_stdarg='define'
 i_stdbool='undef'
 i_stddef='define'
 i_stdint='undef'
@@ -723,8 +722,6 @@ i_unistd='undef'
 i_ustat='undef'
 i_utime='undef'
 i_values='undef'
-i_varargs='undef'
-i_varhdr='stdarg.h'
 i_vfork='undef'
 i_wchar='undef'
 i_xlocale='undef'
index 3e8d325..a1f7126 100644 (file)
@@ -680,7 +680,6 @@ i_rpcsvcdbm='undef'
 i_sgtty='undef'
 i_shadow='undef'
 i_socks='undef'
-i_stdarg='define'
 i_stdbool='undef'
 i_stddef='define'
 i_stdint='undef'
@@ -723,8 +722,6 @@ i_unistd='undef'
 i_ustat='undef'
 i_utime='undef'
 i_values='undef'
-i_varargs='undef'
-i_varhdr='stdarg.h'
 i_vfork='undef'
 i_wchar='undef'
 i_xlocale='undef'
index ccbc0d8..76676a4 100644 (file)
@@ -750,7 +750,6 @@ i_rpcsvcdbm='undef'
 i_sgtty='undef'
 i_shadow='undef'
 i_socks='undef'
-i_stdarg='define'
 i_stdbool='undef'
 i_stddef='define'
 i_stdint='undef'
@@ -793,8 +792,6 @@ i_unistd='undef'
 i_ustat='undef'
 i_utime='define'
 i_values='undef'
-i_varargs='undef'
-i_varhdr='varargs.h'
 i_vfork='undef'
 i_wchar='undef'
 i_xlocale='undef'
index 4b6c470..70eefc9 100644 (file)
@@ -764,7 +764,6 @@ i_rpcsvcdbm='undef'
 i_sgtty='undef'
 i_shadow='undef'
 i_socks='undef'
-i_stdarg='define'
 i_stdbool='define'
 i_stddef='define'
 i_stdint='undef'
@@ -807,8 +806,6 @@ i_unistd='undef'
 i_ustat='undef'
 i_utime='define'
 i_values='undef'
-i_varargs='undef'
-i_varhdr='varargs.h'
 i_vfork='undef'
 i_wchar='undef'
 i_xlocale='undef'
index 50493cd..33f2dad 100644 (file)
@@ -761,7 +761,6 @@ i_rpcsvcdbm='undef'
 i_sgtty='undef'
 i_shadow='undef'
 i_socks='undef'
-i_stdarg='define'
 i_stdbool='undef'
 i_stddef='define'
 i_stdint='undef'
@@ -804,8 +803,6 @@ i_unistd='undef'
 i_ustat='undef'
 i_utime='define'
 i_values='undef'
-i_varargs='undef'
-i_varhdr='varargs.h'
 i_vfork='undef'
 i_wchar='undef'
 i_xlocale='undef'
index a484265..71007f3 100644 (file)
  */
 /*#define I_NDBM       /**/
 
-/* I_STDARG:
- *     This symbol, if defined, indicates that <stdarg.h> exists and should
- *     be included.
- */
-/* I_VARARGS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <varargs.h>.
- */
-#define I_STDARG               /**/
-/*#define I_VARARGS    /**/
-
 /* SH_PATH:
  *     This symbol contains the full pathname to the shell used on this
  *     on this system to execute Bourne shell scripts.  Usually, this will be
index 757295c..7451d62 100644 (file)
 /*#define I_TERMIOS            / **/
 /*#define I_SGTTY              / **/
 
-/* I_STDARG:
- *     This symbol, if defined, indicates that <stdarg.h> exists and should
- *     be included.
- */
-/* I_VARARGS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <varargs.h>.
- */
-#define I_STDARG               /**/
-/*#define I_VARARGS    / **/
-
 /* Free_t:
  *     This variable contains the return type of free().  It is usually
  * void, but occasionally int.
index 38df7a6..6af02b3 100644 (file)
 /*#define I_TERMIOS            / **/
 /*#define I_SGTTY              / **/
 
-/* I_STDARG:
- *     This symbol, if defined, indicates that <stdarg.h> exists and should
- *     be included.
- */
-/* I_VARARGS:
- *     This symbol, if defined, indicates to the C program that it should
- *     include <varargs.h>.
- */
-#define I_STDARG               /**/
-/*#define I_VARARGS    / **/
-
 /* Free_t:
  *     This variable contains the return type of free().  It is usually
  * void, but occasionally int.