xasprintf.c: New file.

libiberty/ChangeLog:

	* xasprintf.c: New file.
	* Makefile.in (CFILES): Add xasprintf.c.
	(REQUIRED_OFILES): Add xasprintf.$(objext).
	(xasprintf.$(objext)): New target.
	* functions.texi: Regenerate.

include/ChangeLog:

	* libiberty.h (xasprintf): Declare.

gcc/ChangeLog:

	* gengtype.h (xasprintf): Remove declaration.
	* gengtype.c (xasprintf): Remove.


Co-Authored-By: Ben Elliston <bje@au.ibm.com>
Co-Authored-By: Manuel López-Ibáñez <manu@gcc.gnu.org>

From-SVN: r219060
This commit is contained in:
Uros Bizjak 2014-12-24 17:22:51 +01:00 committed by Uros Bizjak
parent 369695b99d
commit e885091886
9 changed files with 101 additions and 25 deletions

View File

@ -1,3 +1,8 @@
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

View File

@ -119,23 +119,6 @@ error_at_line (const struct fileloc *pos, const char *msg, ...)
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;
}
/* Locate the ultimate base class of struct S. */

View File

@ -418,9 +418,6 @@ void write_state (const char* path);
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);

View File

@ -1,3 +1,9 @@
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>

View File

@ -629,6 +629,11 @@ extern int pwait (int, int *, int);
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. */

View File

@ -1,3 +1,13 @@
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>

View File

@ -158,8 +158,8 @@ CFILES = alloca.c argv.c asprintf.c atexit.c \
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.
@ -190,9 +190,10 @@ REQUIRED_OFILES = \
./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
@ -1618,6 +1619,16 @@ $(CONFIGURED_OFILES): stamp-picdir stamp-noasandir
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 \

View File

@ -1923,6 +1923,15 @@ if an error occurred while writing to FILE.
@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))

50
libiberty/xasprintf.c Normal file
View File

@ -0,0 +1,50 @@
/* 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;
}