amdgcn, nvptx: Handle -fpic/-fPIC in mkoffload
authorKwok Cheung Yeung <kcy@codesourcery.com>
Mon, 6 Jul 2020 22:21:08 +0000 (15:21 -0700)
committerKwok Cheung Yeung <kcy@codesourcery.com>
Wed, 8 Jul 2020 19:11:10 +0000 (12:11 -0700)
2020-07-08  Tobias Burnus  <tobias@codesourcery.com>

gcc/ChangeLog:

* config/gcn/mkoffload.c (compile_native, main): Pass -fPIC/-fpic
on to the native compiler, if used.
* config/nvptx/mkoffload.c (compile_native, main): Likewise.

gcc/config/gcn/mkoffload.c
gcc/config/nvptx/mkoffload.c

index 14f422e5c6d60b38a1ac76d36b12b4beaac44fc5..0415d945e7279c8f70f6f01d1312bade481505ad 100644 (file)
@@ -483,7 +483,8 @@ process_obj (FILE *in, FILE *cfile)
 /* Compile a C file using the host compiler.  */
 
 static void
-compile_native (const char *infile, const char *outfile, const char *compiler)
+compile_native (const char *infile, const char *outfile, const char *compiler,
+               bool fPIC, bool fpic)
 {
   const char *collect_gcc_options = getenv ("COLLECT_GCC_OPTIONS");
   if (!collect_gcc_options)
@@ -493,6 +494,10 @@ compile_native (const char *infile, const char *outfile, const char *compiler)
   struct obstack argv_obstack;
   obstack_init (&argv_obstack);
   obstack_ptr_grow (&argv_obstack, compiler);
+  if (fPIC)
+    obstack_ptr_grow (&argv_obstack, "-fPIC");
+  if (fpic)
+    obstack_ptr_grow (&argv_obstack, "-fpic");
   if (save_temps)
     obstack_ptr_grow (&argv_obstack, "-save-temps");
   if (verbose)
@@ -596,6 +601,8 @@ main (int argc, char **argv)
   /* Scan the argument vector.  */
   bool fopenmp = false;
   bool fopenacc = false;
+  bool fPIC = false;
+  bool fpic = false;
   for (int i = 1; i < argc; i++)
     {
 #define STR "-foffload-abi="
@@ -614,6 +621,10 @@ main (int argc, char **argv)
        fopenmp = true;
       else if (strcmp (argv[i], "-fopenacc") == 0)
        fopenacc = true;
+      else if (strcmp (argv[i], "-fPIC") == 0)
+       fPIC = true;
+      else if (strcmp (argv[i], "-fpic") == 0)
+       fpic = true;
       else if (strcmp (argv[i], "-save-temps") == 0)
        save_temps = true;
       else if (strcmp (argv[i], "-v") == 0)
@@ -766,7 +777,7 @@ main (int argc, char **argv)
   xputenv (concat ("COMPILER_PATH=", cpath, NULL));
   xputenv (concat ("LIBRARY_PATH=", lpath, NULL));
 
-  compile_native (gcn_cfile_name, outname, collect_gcc);
+  compile_native (gcn_cfile_name, outname, collect_gcc, fPIC, fpic);
 
   return 0;
 }
index efdf9b9980dbd0aaeaa64104d11a1aa0c7bfbe74..4fecb2b9cfe39784f77ee8dcaf1399adda5867f1 100644 (file)
@@ -356,7 +356,8 @@ process (FILE *in, FILE *out)
 }
 
 static void
-compile_native (const char *infile, const char *outfile, const char *compiler)
+compile_native (const char *infile, const char *outfile, const char *compiler,
+               bool fPIC, bool fpic)
 {
   const char *collect_gcc_options = getenv ("COLLECT_GCC_OPTIONS");
   if (!collect_gcc_options)
@@ -366,6 +367,10 @@ compile_native (const char *infile, const char *outfile, const char *compiler)
   struct obstack argv_obstack;
   obstack_init (&argv_obstack);
   obstack_ptr_grow (&argv_obstack, compiler);
+  if (fPIC)
+    obstack_ptr_grow (&argv_obstack, "-fPIC");
+  if (fpic)
+    obstack_ptr_grow (&argv_obstack, "-fpic");
   if (save_temps)
     obstack_ptr_grow (&argv_obstack, "-save-temps");
   if (verbose)
@@ -471,6 +476,8 @@ main (int argc, char **argv)
   /* Scan the argument vector.  */
   bool fopenmp = false;
   bool fopenacc = false;
+  bool fPIC = false;
+  bool fpic = false;
   for (int i = 1; i < argc; i++)
     {
 #define STR "-foffload-abi="
@@ -489,6 +496,10 @@ main (int argc, char **argv)
        fopenmp = true;
       else if (strcmp (argv[i], "-fopenacc") == 0)
        fopenacc = true;
+      else if (strcmp (argv[i], "-fPIC") == 0)
+       fPIC = true;
+      else if (strcmp (argv[i], "-fpic") == 0)
+       fpic = true;
       else if (strcmp (argv[i], "-save-temps") == 0)
        save_temps = true;
       else if (strcmp (argv[i], "-v") == 0)
@@ -587,7 +598,7 @@ main (int argc, char **argv)
 
   fclose (out);
 
-  compile_native (ptx_cfile_name, outname, collect_gcc);
+  compile_native (ptx_cfile_name, outname, collect_gcc, fPIC, fpic);
 
   return 0;
 }