Hi, On 28-03-2021 14:53, Arne Schwabe wrote: > We ISO C99 as minimum support for our source code and all compilers > should support the ISO C99 macros. Especially gcc does not need > the gcc extensions anymore. Also MSVC has support for it (as defined > in the config-msvc.h but also double checked) > > LCLINT seems to be a C analyzer that history has forgotten about. I could > only find https://splint.org/release1.3.html and an similarly old research > paper. > > Signed-off-by: Arne Schwabe <a...@rfc2549.org> > --- > config-msvc.h | 1 - > m4/ax_varargs.m4 | 77 --------------------------------------------- > src/openvpn/error.c | 4 --- > src/openvpn/error.h | 21 ------------- > src/tapctl/error.h | 1 - > 5 files changed, 104 deletions(-) > delete mode 100644 m4/ax_varargs.m4 > > diff --git a/config-msvc.h b/config-msvc.h > index 0260927ce..4db9efae2 100644 > --- a/config-msvc.h > +++ b/config-msvc.h > @@ -47,7 +47,6 @@ > #define HAVE_ACCESS 1 > #define HAVE_CHDIR 1 > #define HAVE_CHSIZE 1 > -#define HAVE_CPP_VARARG_MACRO_ISO 1 > #define HAVE_CTIME 1 > #define HAVE_EVP_CIPHER_CTX_SET_KEY_LENGTH 1 > #define HAVE_IN_PKTINFO 1 > diff --git a/m4/ax_varargs.m4 b/m4/ax_varargs.m4 > deleted file mode 100644 > index c295d21f4..000000000 > --- a/m4/ax_varargs.m4 > +++ /dev/null > @@ -1,77 +0,0 @@ > -dnl @synopsis AX_CPP_VARARG_MACRO_GCC > -dnl > -dnl Test if the preprocessor understands GNU GCC-style vararg macros. > -dnl If it does, defines HAVE_CPP_VARARG_MACRO_GCC to 1. > -dnl > -dnl @version > -dnl @author James Yonan <j...@yonan.net>, Matthias Andree > <matthias.and...@web.de> > -AC_DEFUN([AX_CPP_VARARG_MACRO_GCC], [dnl > - AS_VAR_PUSHDEF([VAR], [ax_cv_cpp_vararg_macro_gcc])dnl > - AC_CACHE_CHECK( > - [for GNU GCC vararg macro support], > - [VAR], > - [AC_COMPILE_IFELSE( > - [AC_LANG_PROGRAM( > - [[ > -#define macro(a, b...) func(a, b) > -int func(int a, int b, int c); > - ]], > - [[ > -int i = macro(1, 2, 3); > - ]] > - )], > - [VAR=yes], > - [VAR=no] > - )] > - )dnl > - > - AS_VAR_IF( > - [VAR], > - [yes], > - [AC_DEFINE( > - [HAVE_CPP_VARARG_MACRO_GCC], > - [1], > - [Define to 1 if your compiler supports GNU GCC-style > variadic macros] > - )] > - )dnl > - AS_VAR_POPDEF([VAR])dnl > -]) > - > -dnl @synopsis AX_CPP_VARARG_MACRO_ISO > -dnl > -dnl Test if the preprocessor understands ISO C 1999 vararg macros. > -dnl If it does, defines HAVE_CPP_VARARG_MACRO_ISO to 1. > -dnl > -dnl @version > -dnl @author James Yonan <j...@yonan.net>, Matthias Andree > <matthias.and...@web.de> > -AC_DEFUN([AX_CPP_VARARG_MACRO_ISO], [dnl > - AS_VAR_PUSHDEF([VAR],[ax_cv_cpp_vararg_macro_iso])dnl > - AC_CACHE_CHECK( > - [for ISO C 1999 vararg macro support], > - [VAR], > - [AC_COMPILE_IFELSE( > - [AC_LANG_PROGRAM( > - [[ > -#define macro(a, ...) func(a, __VA_ARGS__) > -int func(int a, int b, int c); > - ]], > - [[ > -int i = macro(1, 2, 3); > - ]] > - )], > - [VAR=yes], > - [VAR=no] > - )] > - )dnl > - > - AS_VAR_IF( > - [VAR], > - [yes], > - [AC_DEFINE( > - [HAVE_CPP_VARARG_MACRO_ISO], > - [1], > - [Define to 1 if your compiler supports ISO C99 variadic > macros] > - )] > - )dnl > - AS_VAR_POPDEF([VAR])dnl > -]) > diff --git a/src/openvpn/error.c b/src/openvpn/error.c > index 0ecbfc330..e6f7ff0ff 100644 > --- a/src/openvpn/error.c > +++ b/src/openvpn/error.c > @@ -236,26 +236,22 @@ x_msg_va(const unsigned int flags, const char *format, > va_list arglist) > > void usage_small(void); > > -#ifndef HAVE_VARARG_MACROS > /* the macro has checked this otherwise */ > if (!msg_test(flags)) > { > return; > } > -#endif > > e = openvpn_errno(); > > /* > * Apply muting filter. > */ > -#ifndef HAVE_VARARG_MACROS > /* the macro has checked this otherwise */ > if (!dont_mute(flags)) > { > return; > } > -#endif > > gc_init(&gc); > > diff --git a/src/openvpn/error.h b/src/openvpn/error.h > index eaedf172c..1a5521654 100644 > --- a/src/openvpn/error.h > +++ b/src/openvpn/error.h > @@ -146,33 +146,12 @@ bool dont_mute(unsigned int flags); > /* Macro to ensure (and teach static analysis tools) we exit on fatal errors > */ > #define EXIT_FATAL(flags) do { if ((flags) & M_FATAL) {_exit(1);}} while > (false) > > -#if defined(HAVE_CPP_VARARG_MACRO_ISO) && !defined(__LCLINT__) > -#define HAVE_VARARG_MACROS > #define msg(flags, ...) do { if (msg_test(flags)) {x_msg((flags), > __VA_ARGS__);} EXIT_FATAL(flags); } while (false) > #ifdef ENABLE_DEBUG > #define dmsg(flags, ...) do { if (msg_test(flags)) {x_msg((flags), > __VA_ARGS__);} EXIT_FATAL(flags); } while (false) > #else > #define dmsg(flags, ...) > #endif > -#elif defined(HAVE_CPP_VARARG_MACRO_GCC) && !defined(__LCLINT__) > -#define HAVE_VARARG_MACROS > -#define msg(flags, args ...) do { if (msg_test(flags)) {x_msg((flags), > args);} EXIT_FATAL(flags); } while (false) > -#ifdef ENABLE_DEBUG > -#define dmsg(flags, args ...) do { if (msg_test(flags)) {x_msg((flags), > args);} EXIT_FATAL(flags); } while (false) > -#else > -#define dmsg(flags, args ...) > -#endif > -#else /* if defined(HAVE_CPP_VARARG_MACRO_ISO) && !defined(__LCLINT__) */ > -#if !PEDANTIC > -#ifdef _MSC_VER > -#pragma message("this compiler appears to lack vararg macros which will > cause a significant degradation in efficiency") > -#else > -#warning this compiler appears to lack vararg macros which will cause a > significant degradation in efficiency (you can ignore this warning if you are > using LCLINT) > -#endif > -#endif > -#define msg x_msg > -#define dmsg x_msg > -#endif /* if defined(HAVE_CPP_VARARG_MACRO_ISO) && !defined(__LCLINT__) */ > > void x_msg(const unsigned int flags, const char *format, ...) > #ifdef __GNUC__ > diff --git a/src/tapctl/error.h b/src/tapctl/error.h > index 924cbbe89..cea50ba52 100644 > --- a/src/tapctl/error.h > +++ b/src/tapctl/error.h > @@ -67,7 +67,6 @@ bool dont_mute(unsigned int flags); > #endif > #define EXIT_FATAL(flags) do { if ((flags) & M_FATAL) {_exit(1);}} while > (false) > > -#define HAVE_VARARG_MACROS > #define msg(flags, ...) do { if (msg_test(flags)) {x_msg((flags), > __VA_ARGS__);} EXIT_FATAL(flags); } while (false) > #ifdef ENABLE_DEBUG > #define dmsg(flags, ...) do { if (msg_test(flags)) {x_msg((flags), > __VA_ARGS__);} EXIT_FATAL(flags); } while (false) >
Thanks for doing the research. I wrote a patch like this a while ago, but ever submitted it because I "just had to double check"... Patch looks good and passes a configure-make-check cycle. Acked-by: Steffan Karger <stef...@karger.me> -Steffan _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel