Allow a user of libLTO to specify the full pathname of the gcc executable to
run when assembling.

Wire this up to the gold plugin. You can now pass --plugin-opt gcc=/foo/bar/gcc
and it will run that gcc instead of looking for it on the path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70490 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/gold/gold-plugin.cpp b/tools/gold/gold-plugin.cpp
index 260e175..86d3fd3 100644
--- a/tools/gold/gold-plugin.cpp
+++ b/tools/gold/gold-plugin.cpp
@@ -44,6 +44,7 @@
   int gold_version = 0;
 
   bool generate_api_file = false;
+  const char *gcc_path = NULL;
 
   struct claimed_file {
     lto_module_t M;
@@ -101,6 +102,13 @@
       case LDPT_OPTION:
         if (strcmp("generate-api-file", tv->tv_u.tv_string) == 0) {
           generate_api_file = true;
+        } else if (strncmp("gcc=", tv->tv_u.tv_string, 4) == 0) {
+          if (gcc_path) {
+            (*message)(LDPL_WARNING, "Path to gcc specified twice. "
+                       "Discarding %s", tv->tv_u.tv_string);
+          } else {
+            gcc_path = strdup(tv->tv_u.tv_string + 4);
+          }
         } else {
           (*message)(LDPL_WARNING, "Ignoring flag %s", tv->tv_u.tv_string);
         }
@@ -336,6 +344,8 @@
 
   lto_codegen_set_pic_model(cg, output_type);
   lto_codegen_set_debug_model(cg, LTO_DEBUG_MODEL_DWARF);
+  if (gcc_path)
+    lto_codegen_set_gcc_path(cg, gcc_path);
 
   size_t bufsize = 0;
   const char *buffer = static_cast<const char *>(lto_codegen_compile(cg,