[PATCH] Fix gcc-{ar,nm,ranlib} (PR plugins/53126)

Richard Guenther richard.guenther@gmail.com
Thu May 3 10:55:00 GMT 2012


On Thu, May 3, 2012 at 12:49 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> Hi!
>
> What gcc-ar does to find the plugin is significantly different from
> what gcc driver does.  This patch makes it behave tiny bit closer to
> what the driver does, in particular if GCC_EXEC_PREFIX isn't defined
> in the environment, it will use standard_libexec_prefix if
> gcc-{ar,nm,ranlib} program lives in standard_bin_prefix directory
> (in that case make_relative_prefix returns NULL), and if GCC_EXEC_PREFIX
> is defined, it uses that as the directory where it expects to find
> gcc-ar, rather than as the directory where to find the plugin.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk/4.7?

Ok.

Thanks,
Richard.

> 2012-05-03  Jakub Jelinek  <jakub@redhat.com>
>
>        PR plugins/53126
>        * gcc-ar.c (main): If GCC_EXEC_PREFIX is set in env,
>        append program name to it and pass that as first argument
>        to make_relative_prefix.  Always pass standard_libexec_prefix
>        as last argument to make_relative_prefix.  If
>        make_relative_prefix returns NULL, fall back to
>        standard_libexec_prefix.
>
> --- gcc/gcc-ar.c        2011-10-31 20:44:14.000000000 +0100
> +++ gcc/gcc-ar.c        2012-05-02 21:33:45.027022291 +0200
> @@ -1,5 +1,5 @@
>  /* Wrapper for ar/ranlib/nm to pass the LTO plugin.
> -   Copyright (C) 2011 Free Software Foundation, Inc.
> +   Copyright (C) 2011, 2012 Free Software Foundation, Inc.
>    Contributed by Andi Kleen.
>
>  This file is part of GCC.
> @@ -52,11 +52,16 @@ main(int ac, char **av)
>   /* XXX implement more magic from gcc.c? */
>   nprefix = getenv ("GCC_EXEC_PREFIX");
>   if (!nprefix)
> +    nprefix = av[0];
> +  else
> +    nprefix = concat (nprefix, "gcc-" PERSONALITY, NULL);
> +
> +  nprefix = make_relative_prefix (nprefix,
> +                                 standard_bin_prefix,
> +                                 standard_libexec_prefix);
> +  if (nprefix == NULL)
>     nprefix = standard_libexec_prefix;
>
> -  nprefix = make_relative_prefix (av[0],
> -                                 standard_bin_prefix,
> -                                 nprefix);
>   plugin = concat (nprefix,
>                   dir_separator,
>                    DEFAULT_TARGET_MACHINE,
>
>        Jakub



More information about the Gcc-patches mailing list