This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PING] [PATCH 1/2] Add -B support to gcc-ar/ranlib/nm


Andi Kleen <andi@firstfloor.org> writes:

Ping!

> From: Andi Kleen <ak@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  <ak@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)

-- 
ak@linux.intel.com -- Speaking for myself only


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]