Andi Kleen <a...@firstfloor.org> writes: Ping!
> From: Andi Kleen <a...@linux.intel.com> > > To use gcc-{ar,ranlib} for boot strap we need to add a -B option > to the tool. Since ar has weird and unusual argument conventions > implement the code by hand instead of using any libraries. > > v2: Fix typo > > gcc/: > > 2014-08-04 Andi Kleen <a...@linux.intel.com> > > * gcc-ar.c (main): Support -B option. > --- > gcc/gcc-ar.c | 41 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 41 insertions(+) > > diff --git a/gcc/gcc-ar.c b/gcc/gcc-ar.c > index aebaa92..70bf222 100644 > --- a/gcc/gcc-ar.c > +++ b/gcc/gcc-ar.c > @@ -132,9 +132,50 @@ main (int ac, char **av) > const char **nargv; > bool is_ar = !strcmp (PERSONALITY, "ar"); > int exit_code = FATAL_EXIT_CODE; > + int i; > > setup_prefixes (av[0]); > > + /* Not using getopt for now. */ > + for (i = 0; i < ac; i++) > + if (!strncmp (av[i], "-B", 2)) > + { > + const char *arg = av[i] + 2; > + const char *end; > + > + memmove (av + i, av + i + 1, sizeof (char *) * ((ac + 1) - i)); > + ac--; > + if (*arg == 0) > + { > + arg = av[i + 1]; > + if (!arg) > + { > + fprintf (stderr, "Usage: gcc-ar [-B prefix] ar arguments > ...\n"); > + exit (EXIT_FAILURE); > + } > + memmove (av + i, av + i + 1, sizeof (char *) * ((ac + 1) - i)); > + ac--; > + i++; > + } > + > + for (end = arg; *end; end++) > + ; > + end--; > + if (end > arg && *end != '/') > + { > + char *newarg = (char *)xmalloc (strlen(arg) + 2); > + > + strcpy (newarg, arg); > + strcat (newarg, "/"); > + arg = newarg; > + } > + > + add_prefix (&path, arg); > + add_prefix (&target_path, arg); > + break; > + } > + > + > /* Find the GCC LTO plugin */ > plugin = find_a_file (&target_path, LTOPLUGINSONAME, R_OK); > if (!plugin) -- a...@linux.intel.com -- Speaking for myself only