commit bc504af4c6fb9545554cd5df68b274b3a2a2dd2b Author: Joel Brobecker Date: Tue Dec 1 23:10:58 2009 -0500 Import vsnprintf from libiberty if not available. vasprintf and vsnprintf are not available on LynxOS, at least not on version 4.0.0. This patch updates the configury to import them from libiberty if not available out of the box. gdbserver/ * Makefile.in (vasprintf.o, vsnprintf.o): New rules. * configure.ac: Add check for vasprintf and vsnprintf. * configure, config.in: Regenerate. * server.h (vasprintf, vsnprintf): Add conditional declarations. diff --git a/gdb/gdbserver/Makefile.in b/gdb/gdbserver/Makefile.in index 30593ef..8d5d04b 100644 --- a/gdb/gdbserver/Makefile.in +++ b/gdb/gdbserver/Makefile.in @@ -355,6 +355,15 @@ signals.o: ../common/signals.c $(server_h) $(signals_def) memmem.o: ../gnulib/memmem.c $(CC) -o memmem.o -c $(CPPFLAGS) $(INTERNAL_CFLAGS) -Wno-error $< +# We build vasprintf with -DHAVE_CONFIG_H because we want that unit to +# include our config.h file. Otherwise, some system headers do not get +# included, and the compiler emits a warning about implicitly defined +# functions (missing declaration). +vasprintf.o: $(srcdir)/../../libiberty/vasprintf.c + $(CC) -o vasprintf.o -c $(CPPFLAGS) $(INTERNAL_CFLAGS) -DHAVE_CONFIG_H $< +vsnprintf.o: $(srcdir)/../../libiberty/vsnprintf.c + $(CC) -o vsnprintf.o -c $(CPPFLAGS) $(INTERNAL_CFLAGS) $< + i386_low_h = $(srcdir)/i386-low.h i386-low.o: i386-low.c $(i386_low_h) $(server_h) $(target_h) diff --git a/gdb/gdbserver/config.in b/gdb/gdbserver/config.in index a6a9704..909dcb9 100644 --- a/gdb/gdbserver/config.in +++ b/gdb/gdbserver/config.in @@ -30,6 +30,14 @@ don't. */ #undef HAVE_DECL_STRERROR +/* Define to 1 if you have the declaration of `vasprintf', and to 0 if you + don't. */ +#undef HAVE_DECL_VASPRINTF + +/* Define to 1 if you have the declaration of `vsnprintf', and to 0 if you + don't. */ +#undef HAVE_DECL_VSNPRINTF + /* Define to 1 if you have the `dladdr' function. */ #undef HAVE_DLADDR @@ -172,6 +180,12 @@ /* Define if UST is available */ #undef HAVE_UST +/* Define to 1 if you have the `vasprintf' function. */ +#undef HAVE_VASPRINTF + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + /* Checking if errno must be defined */ #undef MUST_DEFINE_ERRNO diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac index bc3bb11..c61ab54 100644 --- a/gdb/gdbserver/configure.ac +++ b/gdb/gdbserver/configure.ac @@ -44,7 +44,7 @@ AC_CHECK_HEADERS(sgtty.h termio.h termios.h sys/reg.h string.h dnl sys/ioctl.h netinet/in.h sys/socket.h netdb.h dnl netinet/tcp.h arpa/inet.h sys/wait.h) AC_CHECK_FUNCS(pread pwrite pread64) -AC_REPLACE_FUNCS(memmem) +AC_REPLACE_FUNCS(memmem vasprintf vsnprintf) # Check for UST ustlibs="" @@ -161,7 +161,7 @@ AC_TRY_LINK([ [AC_MSG_RESULT(no)]) fi -AC_CHECK_DECLS([strerror, perror, memmem]) +AC_CHECK_DECLS([strerror, perror, memmem, vasprintf, vsnprintf]) AC_CHECK_TYPES(socklen_t, [], [], [#include diff --git a/gdb/gdbserver/server.h b/gdb/gdbserver/server.h index 286c80a..2e727f4 100644 --- a/gdb/gdbserver/server.h +++ b/gdb/gdbserver/server.h @@ -58,6 +58,13 @@ extern void perror (const char *); extern void *memmem (const void *, size_t , const void *, size_t); #endif +#if !HAVE_DECL_VASPRINTF +extern int vasprintf(char **strp, const char *fmt, va_list ap); +#endif +#if !HAVE_DECL_VSNPRINTF +int vsnprintf(char *str, size_t size, const char *format, va_list ap); +#endif + #ifndef ATTR_NORETURN #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)) #define ATTR_NORETURN __attribute__ ((noreturn))