diff mbox

lto wrapper verboseness

Message ID 87k2rbue8g.fsf@kepler.schwinge.homeip.net
State New
Headers show

Commit Message

Thomas Schwinge Sept. 28, 2015, 8:42 a.m. UTC
Hi!

On Thu, 30 Jul 2015 10:09:05 +0200, Richard Biener <richard.guenther@gmail.com> wrote:
> On Thu, Jul 30, 2015 at 1:05 AM, Nathan Sidwell <nathan@acm.org> wrote:
> > Jakub,
> > this patch augments the lto wrapper to print out the arguments to spawned
> > commands when verbose.  I found this useful in debugging recent development.
> >
> > ok for trunk?
> 
> Err - fork_execute through collect_execute already does this if
> verbose || debug.
> 
> So better figure out why this doesn't work.

We need to pass on the verbose flag.  I once came up with the following
patch (depends on "Refactor intelmic-mkoffload.c argv building",
<http://news.gmane.org/find-root.php?message_id=%3C87r3ljuez8.fsf%40kepler.schwinge.homeip.net%3E>);
OK for trunk?

commit ad0b6608cff22b62b73016c91c74b21a168acb46
Author: Thomas Schwinge <thomas@codesourcery.com>
Date:   Tue Aug 4 14:08:23 2015 +0200

    Pass on the verbose flag "-v" to/in the mkoffloads
    
    	gcc/
    	* config/i386/intelmic-mkoffload.c (main): Parse "-v" flag.
    	(generate_target_descr_file, generate_target_offloadend_file)
    	(generate_host_descr_file, prepare_target_image, main): Pass it
    	on.
    	* config/nvptx/mkoffload.c (main): Parse "-v" flag.
    	(compile_native, main): Pass it on.
    	* lto-wrapper.c (compile_offload_image): Likewise.
---
 gcc/config/i386/intelmic-mkoffload.c |   24 +++++++++++++++++++++---
 gcc/config/nvptx/mkoffload.c         |    6 ++++++
 gcc/lto-wrapper.c                    |    2 ++
 3 files changed, 29 insertions(+), 3 deletions(-)



Grüße,
 Thomas

Comments

Bernd Schmidt Sept. 28, 2015, 10:23 a.m. UTC | #1
>
> We need to pass on the verbose flag.  I once came up with the following
> patch (depends on "Refactor intelmic-mkoffload.c argv building",
> <http://news.gmane.org/find-root.php?message_id=%3C87r3ljuez8.fsf%40kepler.schwinge.homeip.net%3E>);
> OK for trunk?
>
>     /* Run objcopy.  */
> @@ -457,6 +465,8 @@ prepare_target_image (const char *target_compiler, int argc, char **argv)
>     sprintf (rename_section_opt, ".data=%s", image_section_name);
>     objcopy_argc = 0;
>     objcopy_argv[objcopy_argc++] = "objcopy";
> +  if (verbose)
> +    objcopy_argv[objcopy_argc++] = "-v";
>     objcopy_argv[objcopy_argc++] = "-B";
>     objcopy_argv[objcopy_argc++] = "i386";
>     objcopy_argv[objcopy_argc++] = "-I";

I'm not convinced we gain much by passing "-v" to objcopy, but I'll 
leave that for the Intel folks to decide.

Other than that, ok if all argv arrays are constructed using obstacks.


Bernd
diff mbox

Patch

diff --git gcc/config/i386/intelmic-mkoffload.c gcc/config/i386/intelmic-mkoffload.c
index 8d5af0d..ae1bde0 100644
--- gcc/config/i386/intelmic-mkoffload.c
+++ gcc/config/i386/intelmic-mkoffload.c
@@ -281,6 +281,8 @@  generate_target_descr_file (const char *target_compiler)
   struct obstack argv_obstack;
   obstack_init (&argv_obstack);
   obstack_ptr_grow (&argv_obstack, target_compiler);
+  if (verbose)
+    obstack_ptr_grow (&argv_obstack, "-v");
   obstack_ptr_grow (&argv_obstack, "-c");
   obstack_ptr_grow (&argv_obstack, "-shared");
   obstack_ptr_grow (&argv_obstack, "-fPIC");
@@ -319,6 +321,8 @@  generate_target_offloadend_file (const char *target_compiler)
   struct obstack argv_obstack;
   obstack_init (&argv_obstack);
   obstack_ptr_grow (&argv_obstack, target_compiler);
+  if (verbose)
+    obstack_ptr_grow (&argv_obstack, "-v");
   obstack_ptr_grow (&argv_obstack, "-c");
   obstack_ptr_grow (&argv_obstack, "-shared");
   obstack_ptr_grow (&argv_obstack, "-fPIC");
@@ -380,9 +384,11 @@  generate_host_descr_file (const char *host_compiler)
   fclose (src_file);
 
   unsigned new_argc = 0;
-#define NEW_ARGC_MAX 9
+#define NEW_ARGC_MAX 10
   const char *new_argv[NEW_ARGC_MAX];
   new_argv[new_argc++] = host_compiler;
+  if (verbose)
+    new_argv[new_argc++] = "-v";
   new_argv[new_argc++] = "-c";
   new_argv[new_argc++] = "-fPIC";
   new_argv[new_argc++] = "-shared";
@@ -429,6 +435,8 @@  prepare_target_image (const char *target_compiler, int argc, char **argv)
   struct obstack argv_obstack;
   obstack_init (&argv_obstack);
   obstack_ptr_grow (&argv_obstack, target_compiler);
+  if (verbose)
+    obstack_ptr_grow (&argv_obstack, "-v");
   obstack_ptr_grow (&argv_obstack, "-xlto");
   obstack_ptr_grow (&argv_obstack, "-shared");
   obstack_ptr_grow (&argv_obstack, "-fPIC");
@@ -448,7 +456,7 @@  prepare_target_image (const char *target_compiler, int argc, char **argv)
   compile_for_target (&argv_obstack);
 
   unsigned objcopy_argc;
-#define OBJCOPY_ARGC_MAX 11
+#define OBJCOPY_ARGC_MAX 12
   const char *objcopy_argv[OBJCOPY_ARGC_MAX];
 
   /* Run objcopy.  */
@@ -457,6 +465,8 @@  prepare_target_image (const char *target_compiler, int argc, char **argv)
   sprintf (rename_section_opt, ".data=%s", image_section_name);
   objcopy_argc = 0;
   objcopy_argv[objcopy_argc++] = "objcopy";
+  if (verbose)
+    objcopy_argv[objcopy_argc++] = "-v";
   objcopy_argv[objcopy_argc++] = "-B";
   objcopy_argv[objcopy_argc++] = "i386";
   objcopy_argv[objcopy_argc++] = "-I";
@@ -510,6 +520,8 @@  prepare_target_image (const char *target_compiler, int argc, char **argv)
 
   objcopy_argc = 0;
   objcopy_argv[objcopy_argc++] = "objcopy";
+  if (verbose)
+    objcopy_argv[objcopy_argc++] = "-v";
   objcopy_argv[objcopy_argc++] = target_so_filename;
   objcopy_argv[objcopy_argc++] = "--redefine-sym";
   objcopy_argv[objcopy_argc++] = opt_for_objcopy[0];
@@ -565,6 +577,8 @@  main (int argc, char **argv)
 			 "unrecognizable argument of option " STR);
 	}
 #undef STR
+      else if (strcmp (argv[i], "-v") == 0)
+	verbose = true;
     }
 
   const char *target_so_filename
@@ -573,13 +587,15 @@  main (int argc, char **argv)
   const char *host_descr_filename = generate_host_descr_file (host_compiler);
 
   unsigned new_argc;
-#define NEW_ARGC_MAX 9
+#define NEW_ARGC_MAX 10
   const char *new_argv[NEW_ARGC_MAX];
 
   /* Perform partial linking for the target image and host side descriptor.
      As a result we'll get a finalized object file with all offload data.  */
   new_argc = 0;
   new_argv[new_argc++] = "ld";
+  if (verbose)
+    new_argv[new_argc++] = "-v";
   new_argv[new_argc++] = "-m";
   switch (offload_abi)
     {
@@ -605,6 +621,8 @@  main (int argc, char **argv)
      to avoid conflicting between different DSO and an executable.  */
   new_argc = 0;
   new_argv[new_argc++] = "objcopy";
+  if (verbose)
+    new_argv[new_argc++] = "-v";
   new_argv[new_argc++] = "-L";
   new_argv[new_argc++] = symbols[0];
   new_argv[new_argc++] = "-L";
diff --git gcc/config/nvptx/mkoffload.c gcc/config/nvptx/mkoffload.c
index 78ac8fe..eed099f 100644
--- gcc/config/nvptx/mkoffload.c
+++ gcc/config/nvptx/mkoffload.c
@@ -919,6 +919,8 @@  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 (verbose)
+    obstack_ptr_grow (&argv_obstack, "-v");
   switch (offload_abi)
     {
     case OFFLOAD_ABI_LP64:
@@ -1022,11 +1024,15 @@  main (int argc, char **argv)
 			 "unrecognizable argument of option " STR);
 	}
 #undef STR
+      else if (strcmp (argv[i], "-v") == 0)
+	verbose = true;
     }
 
   struct obstack argv_obstack;
   obstack_init (&argv_obstack);
   obstack_ptr_grow (&argv_obstack, driver);
+  if (verbose)
+    obstack_ptr_grow (&argv_obstack, "-v");
   obstack_ptr_grow (&argv_obstack, "-xlto");
   switch (offload_abi)
     {
diff --git gcc/lto-wrapper.c gcc/lto-wrapper.c
index e13a82a..f932758 100644
--- gcc/lto-wrapper.c
+++ gcc/lto-wrapper.c
@@ -685,6 +685,8 @@  compile_offload_image (const char *target, const char *compiler_path,
       struct obstack argv_obstack;
       obstack_init (&argv_obstack);
       obstack_ptr_grow (&argv_obstack, compiler);
+      if (verbose)
+	obstack_ptr_grow (&argv_obstack, "-v");
       obstack_ptr_grow (&argv_obstack, "-o");
       obstack_ptr_grow (&argv_obstack, filename);