From: "Eli Zaretskii" <eliz@gnu.org>
To: gcc-patches@gcc.gnu.org
Cc: gdb-patches@sources.redhat.com
Subject: [RFA] Eliminate warnings about snprintf declaration
Date: Thu, 12 May 2005 15:08:00 -0000 [thread overview]
Message-ID: <01c55702$Blat.v2.4$d4764900@zahav.net.il> (raw)
In-Reply-To: <41994B9D.9080809@gnu.org> (message from Andrew Cagney on Mon, 15 Nov 2004 19:36:45 -0500)
> Date: Mon, 15 Nov 2004 19:36:45 -0500
> From: Andrew Cagney <cagney@gnu.org>
> Cc: gdb@sources.redhat.com
>
> Eli Zaretskii wrote:
> > When I build GDB with DJGPP, GCC whines like so:
> >
> > remote.c: In function `remote_xfer_partial':
> > remote.c:4920: warning: implicit declaration of function `snprintf'
> >
> > (I see this warning for other source files as well.)
> >
> > This happens because DJGPP doesn't have `snprintf' in its library, so
> > the libiberty version is used. But there's no prototype for the
> > libiberty `snprintf' anywhere, thus the warning. The code seems to be
> > relying on getting the prototype from stdio.h, but if the library
> > doesn't have the function, we cannot expect to have the prototype on a
> > standard header.
> >
> > What would be the canonical way to fix that?
>
> include/libiberty.h, for instance:
>
> > #if !HAVE_DECL_ASPRINTF
> > /* Like sprintf but provides a pointer to malloc'd storage, which must
> > be freed by the caller. */
> >
> > extern int asprintf PARAMS ((char **, const char *, ...)) ATTRIBUTE_PRINTF_2;
> > #endif
Okay, here're the patches to add snprintf and vsnprintf to the list of
functions whose declarations are checked at configure time. Comments?
libiberty/ChangeLog:
2005-05-12 Eli Zaretskii <eliz@gnu.org>
* configure.ac: Add snprintf and vsnprintf to AC_CHEK_DECLS.
include/ChangeLog:
2005-05-12 Eli Zaretskii <eliz@gnu.org>
* libiberty.h (snprintf) [!HAVE_DECL_SNPRINTF]: Add a prototype.
(vsnprintf) [!HAVE_DECL_VSNPRINTF]: Add a prototype.
Index: libiberty/configure.ac
===================================================================
RCS file: /cvs/src/src/libiberty/configure.ac,v
retrieving revision 1.22
diff -u -r1.22 configure.ac
--- libiberty/configure.ac 7 May 2005 02:00:41 -0000 1.22
+++ libiberty/configure.ac 12 May 2005 14:55:28 -0000
@@ -282,7 +282,7 @@
sysconf times sbrk gettimeofday ffs snprintf vsnprintf \
pstat_getstatic pstat_getdynamic sysmp getsysinfo table sysctl wait3 wait4 \
realpath canonicalize_file_name __fsetlocking)
- AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf])
+ AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf])
AC_DEFINE(HAVE_SYS_ERRLIST, 1, [Define if you have the sys_errlist variable.])
AC_DEFINE(HAVE_SYS_NERR, 1, [Define if you have the sys_nerr variable.])
AC_DEFINE(HAVE_SYS_SIGLIST, 1, [Define if you have the sys_siglist variable.])
@@ -518,7 +518,7 @@
[AC_MSG_RESULT([no])])
AC_CHECK_FUNCS($checkfuncs)
- AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf])
+ AC_CHECK_DECLS([basename, ffs, asprintf, vasprintf, snprintf, vsnprintf])
libiberty_NEED_DECLARATION(canonicalize_file_name)
fi
Index: include/libiberty.h
===================================================================
RCS file: /cvs/src/src/include/libiberty.h,v
retrieving revision 1.43
diff -u -r1.43 libiberty.h
--- include/libiberty.h 10 May 2005 10:21:08 -0000 1.43
+++ include/libiberty.h 12 May 2005 14:56:04 -0000
@@ -528,6 +528,24 @@
ATTRIBUTE_PRINTF(2,0);
#endif
+#if !HAVE_DECL_SNPRINTF
+# ifdef HAVE_DECL_SNPRINTF
+ extern int snprintf ();
+# else
+/* Like sprintf but prints at most N characters. */
+ extern int snprintf (char *, size_t, const char *, ...) ATTRIBUTE_PRINTF_3;
+# endif
+#endif
+
+#if !HAVE_DECL_VSNPRINTF
+# ifdef HAVE_DECL_VSNPRINTF
+ extern int vsnprintf ();
+# else
+/* Like vsprintf but prints at most N characters. */
+ extern int vsnprintf (char *, size_t, const char *, va_list);
+# endif
+#endif
+
#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
/* Drastically simplified alloca configurator. If we're using GCC,
next parent reply other threads:[~2005-05-12 14:59 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <01c4c990$Blat.v2.2.2$887ec720@zahav.net.il>
[not found] ` <41994B9D.9080809@gnu.org>
2005-05-12 15:08 ` Eli Zaretskii [this message]
2005-05-12 15:33 ` Daniel Jacobowitz
2005-05-12 15:45 ` Eli Zaretskii
2005-05-12 15:53 ` Daniel Jacobowitz
2005-05-12 16:25 ` Eli Zaretskii
2005-05-12 18:07 ` Daniel Jacobowitz
2005-05-12 20:48 ` Eli Zaretskii
2005-05-12 21:05 ` Daniel Jacobowitz
2005-05-12 21:27 ` DJ Delorie
2005-05-14 10:23 ` Eli Zaretskii
2005-05-14 16:39 ` Daniel Jacobowitz
2005-05-14 19:43 ` Eli Zaretskii
2005-05-15 16:31 ` Ian Lance Taylor
2005-05-15 17:15 ` Daniel Jacobowitz
2005-05-15 19:48 ` Eli Zaretskii
2005-05-15 20:21 ` Daniel Jacobowitz
2005-05-20 12:42 ` Eli Zaretskii
2005-05-20 14:16 ` Eli Zaretskii
2005-05-20 14:34 ` Andreas Schwab
2005-05-20 15:02 ` Eli Zaretskii
2005-05-20 15:06 ` Andreas Schwab
2005-05-20 18:24 ` Eli Zaretskii
2005-05-20 18:26 ` Eli Zaretskii
2005-05-20 20:47 ` Daniel Jacobowitz
2005-05-20 22:16 ` Eli Zaretskii
2005-05-22 14:54 ` Daniel Jacobowitz
2005-05-22 17:11 ` Andreas Schwab
2005-05-15 19:55 ` Eli Zaretskii
2005-05-12 16:01 ` Ian Lance Taylor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='01c55702$Blat.v2.4$d4764900@zahav.net.il' \
--to=eliz@gnu.org \
--cc=gcc-patches@gcc.gnu.org \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox