From 6d74f28b36e29b8708881b60e2e6505047813b0b Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Thu, 9 Feb 2006 11:54:15 +0000 Subject: [PATCH] 2006-02-09 Eric Botcazou * configure.in (CHECK_DECLS): Add vsnprintf. * configure: Regenerate. * messages.c (errno.h, stdarg.h, varargs.h, va_list): Do not include/declare here, but... * as.h: Move code detecting VARARGS idiom to the top. (errno.h, stdarg.h, varargs.h, va_list): ...here. (vsnprintf): Declare if not already declared. --- gas/as.h | 51 ++++++++++++++++++++++++--------- gas/configure | 73 ++++++++++++++++++++++++++++++++++++++++++++++++ gas/configure.in | 2 ++ gas/messages.c | 22 --------------- 4 files changed, 113 insertions(+), 35 deletions(-) diff --git a/gas/as.h b/gas/as.h index 5dad712db19..2f92c2ed774 100644 --- a/gas/as.h +++ b/gas/as.h @@ -68,6 +68,19 @@ extern void *alloca (); # endif /* HAVE_ALLOCA_H */ #endif /* __GNUC__ */ +/* Prefer varargs for non-ANSI compiler, since some will barf if the + ellipsis definition is used with a no-arguments declaration. */ +#if defined (HAVE_VARARGS_H) && !defined (__STDC__) +#undef HAVE_STDARG_H +#endif + +#if defined (HAVE_STDARG_H) +#define USE_STDARG +#endif +#if !defined (USE_STDARG) && defined (HAVE_VARARGS_H) +#define USE_VARARGS +#endif + /* Now, tend to the rest of the configuration. */ /* System include files first... */ @@ -90,6 +103,27 @@ extern void *alloca (); #include #endif +#ifdef HAVE_ERRNO_H +#include +#endif + +#ifdef USE_STDARG +#include +#endif + +#ifdef USE_VARARGS +#include +#endif + +#if !defined (USE_STDARG) && !defined (USE_VARARGS) +/* Roll our own. */ +#define va_alist REST +#define va_dcl +typedef int * va_list; +#define va_start(ARGS) ARGS = &REST +#define va_end(ARGS) +#endif + #include "getopt.h" /* The first getopt value for machine-independent long options. 150 isn't special; it's just an arbitrary non-ASCII char value. */ @@ -145,6 +179,10 @@ extern PTR realloc (); extern char *strstr (); #endif +#if !HAVE_DECL_VSNPRINTF +extern int vsnprintf(char *, size_t, const char *, va_list); +#endif + /* This is needed for VMS. */ #if ! defined (HAVE_UNLINK) && defined (HAVE_REMOVE) #define unlink remove @@ -442,19 +480,6 @@ struct _pseudo_type typedef struct _pseudo_type pseudo_typeS; -/* Prefer varargs for non-ANSI compiler, since some will barf if the - ellipsis definition is used with a no-arguments declaration. */ -#if defined (HAVE_VARARGS_H) && !defined (__STDC__) -#undef HAVE_STDARG_H -#endif - -#if defined (HAVE_STDARG_H) -#define USE_STDARG -#endif -#if !defined (USE_STDARG) && defined (HAVE_VARARGS_H) -#define USE_VARARGS -#endif - #ifdef USE_STDARG #if (__GNUC__ >= 2) && !defined(VMS) /* for use with -Wformat */ diff --git a/gas/configure b/gas/configure index c32f16eae49..5cba97e6ed3 100755 --- a/gas/configure +++ b/gas/configure @@ -10943,6 +10943,79 @@ _ACEOF fi +echo "$as_me:$LINENO: checking whether vsnprintf is declared" >&5 +echo $ECHO_N "checking whether vsnprintf is declared... $ECHO_C" >&6 +if test "${ac_cv_have_decl_vsnprintf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +#ifndef vsnprintf + char *p = (char *) vsnprintf; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_have_decl_vsnprintf=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_have_decl_vsnprintf=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_have_decl_vsnprintf" >&5 +echo "${ECHO_T}$ac_cv_have_decl_vsnprintf" >&6 +if test $ac_cv_have_decl_vsnprintf = yes; then + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_VSNPRINTF 1 +_ACEOF + + +else + cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_VSNPRINTF 0 +_ACEOF + + +fi + + + ac_config_files="$ac_config_files Makefile doc/Makefile po/Makefile.in:po/Make-in" diff --git a/gas/configure.in b/gas/configure.in index 9929755a311..fd14bcf7bdf 100644 --- a/gas/configure.in +++ b/gas/configure.in @@ -663,6 +663,8 @@ GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers) GAS_CHECK_DECL_NEEDED(sbrk, f, char *(*f)(), $gas_test_headers) GAS_CHECK_DECL_NEEDED(strstr, f, char *(*f)(), $gas_test_headers) +AC_CHECK_DECLS([vsnprintf]) + dnl This must come last. dnl We used to make symlinks to files in the source directory, but now diff --git a/gas/messages.c b/gas/messages.c index a8e309d1622..b1b94cdf7c6 100644 --- a/gas/messages.c +++ b/gas/messages.c @@ -21,28 +21,6 @@ #include "as.h" -#include -#ifdef HAVE_ERRNO_H -#include -#endif - -#ifdef USE_STDARG -#include -#endif - -#ifdef USE_VARARGS -#include -#endif - -#if !defined (USE_STDARG) && !defined (USE_VARARGS) -/* Roll our own. */ -#define va_alist REST -#define va_dcl -typedef int * va_list; -#define va_start(ARGS) ARGS = &REST -#define va_end(ARGS) -#endif - static void identify (char *); static void as_show_where (void); static void as_warn_internal (char *, unsigned int, char *); -- 2.30.2