+2014-12-24 Uros Bizjak <ubizjak@gmail.com>
+
+ * gengtype.h (xasprintf): Remove declaration.
+ * gengtype.c (xasprintf): Remove.
+
2014-12-24 Nick Clifton <nickc@redhat.com>
PR target/64160
va_end (ap);
}
-
-/* asprintf, but produces fatal message on out-of-memory. */
-char *
-xasprintf (const char *format, ...)
-{
- int n;
- char *result;
- va_list ap;
-
- va_start (ap, format);
- n = vasprintf (&result, format, ap);
- if (result == NULL || n < 0)
- fatal ("out of memory");
- va_end (ap);
-
- return result;
-}
\f
/* Locate the ultimate base class of struct S. */
extern void error_at_line
(const struct fileloc *pos, const char *msg, ...) ATTRIBUTE_PRINTF_2;
-/* Like asprintf, but calls fatal() on out of memory. */
-extern char *xasprintf (const char *, ...) ATTRIBUTE_PRINTF_1;
-
/* Constructor routines for types. */
extern void do_typedef (const char *s, type_p t, struct fileloc *pos);
extern void do_scalar_typedef (const char *s, struct fileloc *pos);
+2014-12-24 Uros Bizjak <ubizjak@gmail.com>
+ Ben Elliston <bje@au.ibm.com>
+ Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ * libiberty.h (xasprintf): Declare.
+
2014-12-11 Uros Bizjak <ubizjak@gmail.com>
Ben Elliston <bje@au.ibm.com>
Manuel Lopez-Ibanez <manu@gcc.gnu.org>
extern int asprintf (char **, const char *, ...) ATTRIBUTE_PRINTF_2;
#endif
+/* Like asprintf but allocates memory without fail. This works like
+ xmalloc. */
+
+extern char *xasprintf (const char *, ...) ATTRIBUTE_MALLOC ATTRIBUTE_PRINTF_1;
+
#if !HAVE_DECL_VASPRINTF
/* Like vsprintf but provides a pointer to malloc'd storage, which
must be freed by the caller. */
+2014-12-24 Uros Bizjak <ubizjak@gmail.com>
+ Ben Elliston <bje@au.ibm.com>
+ Manuel Lopez-Ibanez <manu@gcc.gnu.org>
+
+ * xasprintf.c: New file.
+ * Makefile.in (CFILES): Add xasprintf.c.
+ (REQUIRED_OFILES): Add xasprintf.$(objext).
+ (xasprintf.$(objext)): New target.
+ * functions.texi: Regenerate.
+
2014-12-11 Uros Bizjak <ubizjak@gmail.com>
Ben Elliston <bje@au.ibm.com>
Manuel Lopez-Ibanez <manu@gcc.gnu.org>
vasprintf.c vfork.c vfprintf.c vprintf.c vprintf-support.c \
vsnprintf.c vsprintf.c \
waitpid.c \
- xatexit.c xexit.c xmalloc.c xmemdup.c xstrdup.c xstrerror.c \
- xstrndup.c xvasprintf.c
+ xasprintf.c xatexit.c xexit.c xmalloc.c xmemdup.c xstrdup.c \
+ xstrerror.c xstrndup.c xvasprintf.c
# These are always included in the library. The first four are listed
# first and by compile time to optimize parallel builds.
./splay-tree.$(objext) ./stack-limit.$(objext) \
./strerror.$(objext) ./strsignal.$(objext) \
./timeval-utils.$(objext) ./unlink-if-ordinary.$(objext) \
- ./xatexit.$(objext) ./xexit.$(objext) ./xmalloc.$(objext) \
- ./xmemdup.$(objext) ./xstrdup.$(objext) ./xstrerror.$(objext) \
- ./xstrndup.$(objext) ./xvasprintf.$(objext)
+ ./xasprintf.$(objext) ./xatexit.$(objext) ./xexit.$(objext) \
+ ./xmalloc.$(objext) ./xmemdup.$(objext) ./xstrdup.$(objext) \
+ ./xstrerror.$(objext) ./xstrndup.$(objext) \
+ ./xvasprintf.$(objext)
# These are all the objects that configure may add to the library via
# $funcs or EXTRA_OFILES. This list exists here only for "make
else true; fi
$(COMPILE.c) $(srcdir)/waitpid.c $(OUTPUT_OPTION)
+./xasprintf.$(objext): $(srcdir)/xasprintf.c config.h $(INCDIR)/ansidecl.h \
+ $(INCDIR)/libiberty.h
+ if [ x"$(PICFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(srcdir)/xasprintf.c -o pic/$@; \
+ else true; fi
+ if [ x"$(NOASANFLAG)" != x ]; then \
+ $(COMPILE.c) $(PICFLAG) $(NOASANFLAG) $(srcdir)/xasprintf.c -o noasan/$@; \
+ else true; fi
+ $(COMPILE.c) $(srcdir)/xasprintf.c $(OUTPUT_OPTION)
+
./xatexit.$(objext): $(srcdir)/xatexit.c config.h $(INCDIR)/ansidecl.h \
$(INCDIR)/libiberty.h
if [ x"$(PICFLAG)" != x ]; then \
@end deftypefn
+@c xasprintf.c:31
+@deftypefn Replacement char* xasprintf (const char *@var{format}, ...)
+
+Print to allocated string without fail. If @code{xasprintf} fails,
+this will print a message to @code{stderr} (using the name set by
+@code{xmalloc_set_program_name}, if any) and then call @code{xexit}.
+
+@end deftypefn
+
@c xatexit.c:11
@deftypefun int xatexit (void (*@var{fn}) (void))
--- /dev/null
+/* Implement the xasprintf function.
+ Copyright (C) 2014 Free Software Foundation, Inc.
+ Contributed by Manuel Lopez-Ibanez.
+
+This file is part of the libiberty library.
+Libiberty is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+Libiberty is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with libiberty; see the file COPYING.LIB. If not, write
+to the Free Software Foundation, Inc., 51 Franklin Street - Fifth
+Floor, Boston, MA 02110-1301, USA. */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include "ansidecl.h"
+#include "libiberty.h"
+
+#include <stdarg.h>
+
+/*
+
+@deftypefn Replacement char* xasprintf (const char *@var{format}, ...)
+
+Print to allocated string without fail. If @code{xasprintf} fails,
+this will print a message to @code{stderr} (using the name set by
+@code{xmalloc_set_program_name}, if any) and then call @code{xexit}.
+
+@end deftypefn
+
+*/
+
+char *
+xasprintf (const char *fmt, ...)
+{
+ char *buf;
+ va_list ap;
+ va_start (ap, fmt);
+ buf = xvasprintf (fmt, ap);
+ va_end (ap);
+ return buf;
+}