Print working directory to gcov files (PR gcov-profile/84846).
authorMartin Liska <mliska@suse.cz>
Fri, 18 May 2018 12:46:32 +0000 (14:46 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Fri, 18 May 2018 12:46:32 +0000 (12:46 +0000)
2018-05-18  Martin Liska  <mliska@suse.cz>

PR gcov-profile/84846
* coverage.c (coverage_init): Write PWD to .gcno file.
* doc/gcov.texi: Document how working directory is printed.
* gcov-dump.c (dump_gcov_file): Print PWD.
* gcov.c (output_intermediate_file): Likewise.
(read_graph_file): Read PWD string.
(output_lines): Print PWD.

From-SVN: r260359

gcc/ChangeLog
gcc/coverage.c
gcc/doc/gcov.texi
gcc/gcov-dump.c
gcc/gcov.c

index 479b032c040b61124e091aef89e1896b1f2fe68c..dc0932fb8276c4a5bb6a8c44b395edfb431fa45f 100644 (file)
@@ -1,3 +1,13 @@
+2018-05-18  Martin Liska  <mliska@suse.cz>
+
+       PR gcov-profile/84846
+       * coverage.c (coverage_init): Write PWD to .gcno file.
+       * doc/gcov.texi: Document how working directory is printed.
+       * gcov-dump.c (dump_gcov_file): Print PWD.
+       * gcov.c (output_intermediate_file): Likewise.
+       (read_graph_file): Read PWD string.
+       (output_lines): Print PWD.
+
 2018-05-18  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
 
        PR middle-end/85817
index 32ef298a11f3ad76ed947dfe7b7e0be5834db298..9e0185acd0909ef5d87cb8988c0b3142d0578c13 100644 (file)
@@ -1269,6 +1269,7 @@ coverage_init (const char *filename)
          gcov_write_unsigned (GCOV_NOTE_MAGIC);
          gcov_write_unsigned (GCOV_VERSION);
          gcov_write_unsigned (bbg_file_stamp);
+         gcov_write_string (getpwd ());
 
          /* Do not support has_unexecuted_blocks for Ada.  */
          gcov_write_unsigned (strcmp (lang_hooks.name, "GNU Ada") != 0);
index 59235876aaac1b230418314e19148a13e3259b8b..54625ce67cb430f7728493a049bc15c4ec8f2944 100644 (file)
@@ -189,6 +189,7 @@ one entry per line
 
 @smallexample
 version:@var{gcc_version}
+cwd:@var{working_directory}
 file:@var{source_file_name}
 function:@var{start_line_number},@var{end_line_number},@var{execution_count},@var{function_name}
 lcount:@var{line number},@var{execution_count},@var{has_unexecuted_block}
@@ -210,6 +211,7 @@ Here is a sample when @option{-i} is used in conjunction with @option{-b} option
 
 @smallexample
 version: 8.1.0 20180103
+cwd:/home/gcc/testcase
 file:tmp.cpp
 function:7,7,0,_ZN3FooIcEC2Ev
 function:7,7,1,_ZN3FooIiEC2Ev
@@ -441,6 +443,7 @@ Here is a sample:
 
 @smallexample
         -:    0:Source:tmp.cpp
+        -:    0:Working directory:/home/gcc/testcase
         -:    0:Graph:tmp.gcno
         -:    0:Data:tmp.gcda
         -:    0:Runs:1
@@ -508,6 +511,7 @@ counts, and the output looks like this:
 
 @smallexample
         -:    0:Source:tmp.cpp
+        -:    0:Working directory:/home/gcc/testcase
         -:    0:Graph:tmp.gcno
         -:    0:Data:tmp.gcda
         -:    0:Runs:1
@@ -596,6 +600,7 @@ When you use the @option{-b} option, your output looks like this:
 
 @smallexample
         -:    0:Source:tmp.cpp
+        -:    0:Working directory:/home/gcc/testcase
         -:    0:Graph:tmp.gcno
         -:    0:Data:tmp.gcda
         -:    0:Runs:1
index ba432db51c73daf6f8d532565fd07d88261ea84b..0ae7e944483b8c541f297135d396458353e19762 100644 (file)
@@ -220,6 +220,8 @@ dump_gcov_file (const char *filename)
 
   if (!is_data_type)
     {
+      printf ("%s:cwd: %s\n", filename, gcov_read_string ());
+
       /* Support for unexecuted basic blocks.  */
       unsigned support_unexecuted_blocks = gcov_read_unsigned ();
       if (!support_unexecuted_blocks)
index 6bbfe33ca336d7d3241f8072888344fdeb7b4a23..8ed6e0d4d3fda0bae4bc27c88fa1739a42d3e71c 100644 (file)
@@ -432,6 +432,9 @@ static unsigned bbg_stamp;
 /* Supports has_unexecuted_blocks functionality.  */
 static unsigned bbg_supports_has_unexecuted_blocks;
 
+/* Working directory in which a TU was compiled.  */
+static const char *bbg_cwd;
+
 /* Name and file pointer of the input file for the count data (gcda).  */
 
 static char *da_file_name;
@@ -1037,6 +1040,7 @@ output_intermediate_file (FILE *gcov_file, source_info *src)
 {
   fprintf (gcov_file, "version:%s\n", version_string);
   fprintf (gcov_file, "file:%s\n", src->name);    /* source file name */
+  fprintf (gcov_file, "cwd:%s\n", bbg_cwd);
 
   std::sort (src->functions.begin (), src->functions.end (),
             function_line_start_cmp ());
@@ -1550,6 +1554,7 @@ read_graph_file (void)
               bbg_file_name, v, e);
     }
   bbg_stamp = gcov_read_unsigned ();
+  bbg_cwd = xstrdup (gcov_read_string ());
   bbg_supports_has_unexecuted_blocks = gcov_read_unsigned ();
 
   function_info *fn = NULL;
@@ -2918,6 +2923,8 @@ output_lines (FILE *gcov_file, const source_info *src)
   const char *retval;
 
   fprintf (gcov_file, DEFAULT_LINE_START "Source:%s\n", src->coverage.name);
+  fprintf (gcov_file, DEFAULT_LINE_START "Working directory:%s\n",
+          bbg_cwd);
   if (!multiple_files)
     {
       fprintf (gcov_file, DEFAULT_LINE_START "Graph:%s\n", bbg_file_name);