From: Andi Kleen <a...@linux.intel.com> Only give a warning when gcc-ar/nm/ranlib cannot find the plugin. In this case do not pass a plugin argument to the wrapped program.
This should make it work on non linker plugin systems, so that the build system can use it unconditionally. gcc/: 2014-09-01 Andi Kleen <a...@linux.intel.com> * gcc-ar (main): Only warn when plugin not found. --- gcc/gcc-ar.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/gcc/gcc-ar.c b/gcc/gcc-ar.c index fdff89c..e27ea3b 100644 --- a/gcc/gcc-ar.c +++ b/gcc/gcc-ar.c @@ -182,8 +182,8 @@ main (int ac, char **av) plugin = find_a_file (&target_path, LTOPLUGINSONAME, R_OK); if (!plugin) { - fprintf (stderr, "%s: Cannot find plugin '%s'\n", av[0], LTOPLUGINSONAME); - exit (1); + fprintf (stderr, "%s: Warning: Cannot find plugin '%s'\n", av[0], LTOPLUGINSONAME); + /* Fall back to not using a plugin. */ } /* Find the wrapped binutils program. */ @@ -204,15 +204,20 @@ main (int ac, char **av) } /* Create new command line with plugin */ - nargv = XCNEWVEC (const char *, ac + 4); - nargv[0] = exe_name; - nargv[1] = "--plugin"; - nargv[2] = plugin; - if (is_ar && av[1] && av[1][0] != '-') - av[1] = concat ("-", av[1], NULL); - for (k = 1; k < ac; k++) - nargv[2 + k] = av[k]; - nargv[2 + k] = NULL; + if (plugin != NULL) + { + nargv = XCNEWVEC (const char *, ac + 4); + nargv[0] = exe_name; + nargv[1] = "--plugin"; + nargv[2] = plugin; + if (is_ar && av[1] && av[1][0] != '-') + av[1] = concat ("-", av[1], NULL); + for (k = 1; k < ac; k++) + nargv[2 + k] = av[k]; + nargv[2 + k] = NULL; + } + else + nargv = CONST_CAST2 (const char **, char **, av); /* Run utility */ /* ??? the const is misplaced in pex_one's argv? */ -- 2.1.0