summaryrefslogtreecommitdiff
path: root/gcc/gcov.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2017-04-10 13:37:14 +0200
committerMartin Liska <marxin@gcc.gnu.org>2017-04-10 11:37:14 +0000
commit541e0d5597169aa3c6ccbfea58df76838db69e28 (patch)
tree62aac49df9e280669f5218238e4c6cfa4833d119 /gcc/gcov.c
parentba6ee9fc83ea84afad140fe6092109fad187544e (diff)
downloadgcc-541e0d5597169aa3c6ccbfea58df76838db69e28.tar.gz
Support multiple files w/ -i option in gcov (PR gcov-profile/80224).
2017-04-10 Martin Liska <mliska@suse.cz> PR gcov-profile/80224 * gcov.c (print_usage): Fix usage string. (get_gcov_intermediate_filename): Remove. (output_gcov_file): Use both for normal and intermediate format. (generate_results): Do not initialize special file for intermediate format. From-SVN: r246804
Diffstat (limited to 'gcc/gcov.c')
-rw-r--r--gcc/gcov.c62
1 files changed, 7 insertions, 55 deletions
diff --git a/gcc/gcov.c b/gcc/gcov.c
index 320b81263f8..bb26a1a9787 100644
--- a/gcc/gcov.c
+++ b/gcc/gcov.c
@@ -653,7 +653,7 @@ print_usage (int error_p)
FILE *file = error_p ? stderr : stdout;
int status = error_p ? FATAL_EXIT_CODE : SUCCESS_EXIT_CODE;
- fnotice (file, "Usage: gcov [OPTION]... SOURCE|OBJ...\n\n");
+ fnotice (file, "Usage: gcov [OPTION...] SOURCE|OBJ...\n\n");
fnotice (file, "Print code coverage information.\n\n");
fnotice (file, " -h, --help Print this help, then exit\n");
fnotice (file, " -a, --all-blocks Show information for every basic block\n");
@@ -791,31 +791,6 @@ process_args (int argc, char **argv)
return optind;
}
-/* Get the name of the gcov file. The return value must be free'd.
-
- It appends the '.gcov' extension to the *basename* of the file.
- The resulting file name will be in PWD.
-
- e.g.,
- input: foo.da, output: foo.da.gcov
- input: a/b/foo.cc, output: foo.cc.gcov */
-
-static char *
-get_gcov_intermediate_filename (const char *file_name)
-{
- const char *gcov = ".gcov";
- char *result;
- const char *cptr;
-
- /* Find the 'basename'. */
- cptr = lbasename (file_name);
-
- result = XNEWVEC (char, strlen (cptr) + strlen (gcov) + 1);
- sprintf (result, "%s%s", cptr, gcov);
-
- return result;
-}
-
/* Output the result in intermediate format used by 'lcov'.
The intermediate format contains a single file named 'foo.cc.gcov',
@@ -980,7 +955,11 @@ output_gcov_file (const char *file_name, source_t *src)
if (gcov_file)
{
fnotice (stdout, "Creating '%s'\n", gcov_file_name);
- output_lines (gcov_file, src);
+
+ if (flag_intermediate_format)
+ output_intermediate_file (gcov_file, src);
+ else
+ output_lines (gcov_file, src);
if (ferror (gcov_file))
fnotice (stderr, "Error writing output file '%s'\n", gcov_file_name);
fclose (gcov_file);
@@ -1002,8 +981,6 @@ generate_results (const char *file_name)
unsigned ix;
source_t *src;
function_t *fn;
- FILE *gcov_intermediate_file = NULL;
- char *gcov_intermediate_filename = NULL;
for (ix = n_sources, src = sources; ix--; src++)
if (src->num_lines)
@@ -1033,19 +1010,6 @@ generate_results (const char *file_name)
file_name = canonicalize_name (file_name);
}
- if (flag_gcov_file && flag_intermediate_format)
- {
- /* Open the intermediate file. */
- gcov_intermediate_filename = get_gcov_intermediate_filename (file_name);
- gcov_intermediate_file = fopen (gcov_intermediate_filename, "w");
- if (!gcov_intermediate_file)
- {
- fnotice (stderr, "Cannot open intermediate output file %s\n",
- gcov_intermediate_filename);
- return;
- }
- }
-
for (ix = n_sources, src = sources; ix--; src++)
{
if (flag_relative_only)
@@ -1068,23 +1032,11 @@ generate_results (const char *file_name)
total_executed += src->coverage.lines_executed;
if (flag_gcov_file)
{
- if (flag_intermediate_format)
- /* Output the intermediate format without requiring source
- files. This outputs a section to a *single* file. */
- output_intermediate_file (gcov_intermediate_file, src);
- else
- output_gcov_file (file_name, src);
+ output_gcov_file (file_name, src);
fnotice (stdout, "\n");
}
}
- if (flag_gcov_file && flag_intermediate_format)
- {
- /* Now we've finished writing the intermediate file. */
- fclose (gcov_intermediate_file);
- XDELETEVEC (gcov_intermediate_filename);
- }
-
if (!file_name)
executed_summary (total_lines, total_executed);
}