GCOV: do not mangle .gcno files.
authorMartin Liska <mliska@suse.cz>
Fri, 25 Sep 2020 08:53:26 +0000 (10:53 +0200)
committerMartin Liska <mliska@suse.cz>
Fri, 2 Oct 2020 10:10:03 +0000 (12:10 +0200)
gcc/ChangeLog:

PR gcov-profile/97193
* coverage.c (coverage_init): GCDA note files should not be
mangled and should end in output directory.

gcc/coverage.c

index f353c9c5022eb7aaf9b8008e68e3f4b1d52c4789..7711412c3bed882f6b506fa542f847e54b8ed708 100644 (file)
@@ -1206,6 +1206,8 @@ coverage_obj_finish (vec<constructor_elt, va_gc> *ctor)
 void
 coverage_init (const char *filename)
 {
+  const char *original_filename = filename;
+  int original_len = strlen (original_filename);
 #if HAVE_DOS_BASED_FILE_SYSTEM
   const char *separator = "\\";
 #else
@@ -1277,9 +1279,9 @@ coverage_init (const char *filename)
        bbg_file_name = xstrdup (profile_note_location);
       else
        {
-         bbg_file_name = XNEWVEC (char, len + strlen (GCOV_NOTE_SUFFIX) + 1);
-         memcpy (bbg_file_name, filename, len);
-         strcpy (bbg_file_name + len, GCOV_NOTE_SUFFIX);
+         bbg_file_name = XNEWVEC (char, original_len + strlen (GCOV_NOTE_SUFFIX) + 1);
+         memcpy (bbg_file_name, original_filename, original_len);
+         strcpy (bbg_file_name + original_len, GCOV_NOTE_SUFFIX);
        }
 
       if (!gcov_open (bbg_file_name, -1))