Fix gcov-dump tool for GCDA files (PR gcov-profile/83509).
authorMartin Liska <mliska@suse.cz>
Thu, 21 Dec 2017 14:22:08 +0000 (15:22 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Thu, 21 Dec 2017 14:22:08 +0000 (14:22 +0000)
2017-12-21  Martin Liska  <mliska@suse.cz>

PR gcov-profile/83509
* gcov-dump.c (dump_gcov_file): Do not read info about
support_unexecuted_blocks for gcda files.

From-SVN: r255941

gcc/ChangeLog
gcc/gcov-dump.c

index c411e49..fd78d89 100644 (file)
@@ -1,3 +1,9 @@
+2017-12-21  Martin Liska  <mliska@suse.cz>
+
+       PR gcov-profile/83509
+       * gcov-dump.c (dump_gcov_file): Do not read info about
+       support_unexecuted_blocks for gcda files.
+
 2017-12-21  Jakub Jelinek  <jakub@redhat.com>
 
        PR rtl-optimization/82973
index e5e649c..7dc28bb 100644 (file)
@@ -170,6 +170,7 @@ dump_gcov_file (const char *filename)
 {
   unsigned tags[4];
   unsigned depth = 0;
+  bool is_data_type;
 
   if (!gcov_open (filename, 1))
     {
@@ -181,14 +182,13 @@ dump_gcov_file (const char *filename)
   {
     unsigned magic = gcov_read_unsigned ();
     unsigned version;
-    const char *type = NULL;
     int endianness = 0;
     char m[4], v[4];
 
     if ((endianness = gcov_magic (magic, GCOV_DATA_MAGIC)))
-      type = "data";
+      is_data_type = true;
     else if ((endianness = gcov_magic (magic, GCOV_NOTE_MAGIC)))
-      type = "note";
+      is_data_type = false;
     else
       {
        printf ("%s:not a gcov file\n", filename);
@@ -199,7 +199,8 @@ dump_gcov_file (const char *filename)
     GCOV_UNSIGNED2STRING (v, version);
     GCOV_UNSIGNED2STRING (m, magic);
 
-    printf ("%s:%s:magic `%.4s':version `%.4s'%s\n", filename, type,
+    printf ("%s:%s:magic `%.4s':version `%.4s'%s\n", filename,
+           is_data_type ? "data" : "note",
            m, v, endianness < 0 ? " (swapped endianness)" : "");
     if (version != GCOV_VERSION)
       {
@@ -217,10 +218,13 @@ dump_gcov_file (const char *filename)
     printf ("%s:stamp %lu\n", filename, (unsigned long)stamp);
   }
 
-  /* Support for unexecuted basic blocks.  */
-  unsigned support_unexecuted_blocks = gcov_read_unsigned ();
-  if (!support_unexecuted_blocks)
-    printf ("%s: has_unexecuted_block is not supported\n", filename);
+  if (!is_data_type)
+    {
+      /* Support for unexecuted basic blocks.  */
+      unsigned support_unexecuted_blocks = gcov_read_unsigned ();
+      if (!support_unexecuted_blocks)
+       printf ("%s: has_unexecuted_block is not supported\n", filename);
+    }
 
   while (1)
     {