re PR bootstrap/56509 (gnattools build failure)

PR bootstrap/56509
	* opts.c (opts_obstack, opts_concat): Moved to...
	* opts-common.c (opts_obstack, opts_concat): ... here.

From-SVN: r196449
This commit is contained in:
Jakub Jelinek 2013-03-05 07:01:13 +01:00 committed by Jakub Jelinek
parent da56a169ac
commit a5d1569a6d
3 changed files with 40 additions and 34 deletions

View File

@ -1,3 +1,9 @@
2013-03-05 Jakub Jelinek <jakub@redhat.com>
PR bootstrap/56509
* opts.c (opts_obstack, opts_concat): Moved to...
* opts-common.c (opts_obstack, opts_concat): ... here.
2013-03-04 Jakub Jelinek <jakub@redhat.com>
PR middle-end/56461

View File

@ -692,6 +692,40 @@ decode_cmdline_option (const char **argv, unsigned int lang_mask,
return result;
}
/* Obstack for option strings. */
struct obstack opts_obstack;
/* Like libiberty concat, but allocate using opts_obstack. */
char *
opts_concat (const char *first, ...)
{
char *newstr, *end;
size_t length = 0;
const char *arg;
va_list ap;
/* First compute the size of the result and get sufficient memory. */
va_start (ap, first);
for (arg = first; arg; arg = va_arg (ap, const char *))
length += strlen (arg);
newstr = XOBNEWVEC (&opts_obstack, char, length + 1);
va_end (ap);
/* Now copy the individual pieces to the result string. */
va_start (ap, first);
for (arg = first, end = newstr; arg; arg = va_arg (ap, const char *))
{
length = strlen (arg);
memcpy (end, arg, length);
end += length;
}
*end = '\0';
va_end (ap);
return newstr;
}
/* Decode command-line options (ARGC and ARGV being the arguments of
main) into an array, setting *DECODED_OPTIONS to a pointer to that
array and *DECODED_OPTIONS_COUNT to the number of entries in the

View File

@ -268,40 +268,6 @@ add_comma_separated_to_vector (void **pvec, const char *arg)
*pvec = v;
}
/* Like libiberty concat, but allocate using opts_obstack. */
char *
opts_concat (const char *first, ...)
{
char *newstr, *end;
size_t length = 0;
const char *arg;
va_list ap;
/* First compute the size of the result and get sufficient memory. */
va_start (ap, first);
for (arg = first; arg; arg = va_arg (ap, const char *))
length += strlen (arg);
newstr = XOBNEWVEC (&opts_obstack, char, length + 1);
va_end (ap);
/* Now copy the individual pieces to the result string. */
va_start (ap, first);
for (arg = first, end = newstr; arg; arg = va_arg (ap, const char *))
{
length = strlen (arg);
memcpy (end, arg, length);
end += length;
}
*end = '\0';
va_end (ap);
return newstr;
}
/* Obstack for option strings. */
struct obstack opts_obstack;
/* Initialize OPTS and OPTS_SET before using them in parsing options. */
void