On Fri, Mar 13, 2020 at 01:26:02PM +0100, Martin Liška wrote: > diff --git a/gcc/lto-wrapper.c b/gcc/lto-wrapper.c > index b8a35c85714..84a0bd24e91 100644 > --- a/gcc/lto-wrapper.c > +++ b/gcc/lto-wrapper.c > @@ -1317,7 +1317,11 @@ run_gcc (unsigned argc, char *argv[]) > > char *xassembler_opts_string > = XOBFINISH (&temporary_obstack, char *); > - strcat (collect_gcc_options, xassembler_opts_string); > + char *collect = (char *)xmalloc (strlen (collect_gcc_options) > + + strlen (xassembler_opts_string) + 1); > + strcpy (collect, collect_gcc_options); > + strcat (collect, xassembler_opts_string);
collect_gcc_options = concat (collect_gcc_options, xassembler_opts_string, NULL); instead? Though, even that looks like a memory leak. So, e.g. record that collect_gcc_options has been allocated in some bool and XDELETE it at the end of function? The string could be as well built in the temporary_obstack by obstack_grow (&temporary_obstack, collect_gcc_options); before the prepend_xassembler_to_collect_as_options call (which btw seems incorrectly formatted, the function name should be at the start of line), but you'd then need to finish the obstack at the end of function. > + collect_gcc_options = collect; Jakub