diff options
author | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-12-24 16:22:51 +0000 |
---|---|---|
committer | uros <uros@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-12-24 16:22:51 +0000 |
commit | 655833ff71f5073c1caa5124df93dab5cb922008 (patch) | |
tree | e21bcbff0304890e7c01194049ad076d6a2a28eb | |
parent | c041f442cd424f824022d3338380ecd4576a437d (diff) |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219060 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/gengtype.c | 17 | ||||
-rw-r--r-- | gcc/gengtype.h | 3 | ||||
-rw-r--r-- | include/ChangeLog | 6 | ||||
-rw-r--r-- | include/libiberty.h | 5 | ||||
-rw-r--r-- | libiberty/ChangeLog | 10 | ||||
-rw-r--r-- | libiberty/Makefile.in | 21 | ||||
-rw-r--r-- | libiberty/functions.texi | 9 | ||||
-rw-r--r-- | libiberty/xasprintf.c | 50 |
9 files changed, 101 insertions, 25 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 259e2af9f98..d2870d6b21d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/gengtype.c b/gcc/gengtype.c index 3f9ad0b3463..e87bea0ab46 100644 --- a/gcc/gengtype.c +++ b/gcc/gengtype.c @@ -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. */ diff --git a/gcc/gengtype.h b/gcc/gengtype.h index e4596039a01..3da57e84440 100644 --- a/gcc/gengtype.h +++ b/gcc/gengtype.h @@ -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); diff --git a/include/ChangeLog b/include/ChangeLog index 1d5f7013321..dbf2554238d 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -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> diff --git a/include/libiberty.h b/include/libiberty.h index b9694f0f093..aa0d92c8c20 100644 --- a/include/libiberty.h +++ b/include/libiberty.h @@ -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. */ diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index e4a8ce81b25..ac2387552ed 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -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> diff --git a/libiberty/Makefile.in b/libiberty/Makefile.in index e7e17af226c..f06cc69a973 100644 --- a/libiberty/Makefile.in +++ b/libiberty/Makefile.in @@ -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 \ diff --git a/libiberty/functions.texi b/libiberty/functions.texi index 39064b4166c..b5f4e809d06 100644 --- a/libiberty/functions.texi +++ b/libiberty/functions.texi @@ -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)) diff --git a/libiberty/xasprintf.c b/libiberty/xasprintf.c new file mode 100644 index 00000000000..4f72bb26655 --- /dev/null +++ b/libiberty/xasprintf.c @@ -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; +} |