mirror of git://gcc.gnu.org/git/gcc.git
Validate that destination gcov file does not exist for gcov-tool (PR gcov-profile/78783).
2017-04-18 Martin Liska <mliska@suse.cz> PR gcov-profile/78783 * libgcov-driver.c (gcov_get_filename): New function. 2017-04-18 Martin Liska <mliska@suse.cz> PR gcov-profile/78783 * gcov-tool.c (gcov_output_files): Validate that destination file is either removed by the tool or by a user. From-SVN: r246961
This commit is contained in:
parent
4c6a5d87fd
commit
6397118495
|
|
@ -1,3 +1,9 @@
|
||||||
|
2017-04-18 Martin Liska <mliska@suse.cz>
|
||||||
|
|
||||||
|
PR gcov-profile/78783
|
||||||
|
* gcov-tool.c (gcov_output_files): Validate that destination
|
||||||
|
file is either removed by the tool or by a user.
|
||||||
|
|
||||||
2017-04-14 Andrew Burgess <andrew.burgess@embecosm.com>
|
2017-04-14 Andrew Burgess <andrew.burgess@embecosm.com>
|
||||||
Guy Benyei <guybe@mellanox.com>
|
Guy Benyei <guybe@mellanox.com>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ extern int gcov_profile_normalize (struct gcov_info*, gcov_type);
|
||||||
extern int gcov_profile_scale (struct gcov_info*, float, int, int);
|
extern int gcov_profile_scale (struct gcov_info*, float, int, int);
|
||||||
extern struct gcov_info* gcov_read_profile_dir (const char*, int);
|
extern struct gcov_info* gcov_read_profile_dir (const char*, int);
|
||||||
extern void gcov_do_dump (struct gcov_info *, int);
|
extern void gcov_do_dump (struct gcov_info *, int);
|
||||||
|
extern const char *gcov_get_filename (struct gcov_info *list);
|
||||||
extern void gcov_set_verbose (void);
|
extern void gcov_set_verbose (void);
|
||||||
|
|
||||||
/* Set to verbose output mode. */
|
/* Set to verbose output mode. */
|
||||||
|
|
@ -114,6 +115,14 @@ gcov_output_files (const char *out, struct gcov_info *profile)
|
||||||
if (ret)
|
if (ret)
|
||||||
fatal_error (input_location, "Cannot change directory to %s", out);
|
fatal_error (input_location, "Cannot change directory to %s", out);
|
||||||
|
|
||||||
|
/* Verify that output file does not exist (either was removed by
|
||||||
|
unlink_profile_data or removed by user). */
|
||||||
|
const char *filename = gcov_get_filename (profile);
|
||||||
|
|
||||||
|
if (access (filename, F_OK) != -1)
|
||||||
|
fatal_error (input_location, "output file %s already exists in folder %s",
|
||||||
|
filename, out);
|
||||||
|
|
||||||
gcov_do_dump (profile, 0);
|
gcov_do_dump (profile, 0);
|
||||||
|
|
||||||
ret = chdir (pwd);
|
ret = chdir (pwd);
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
2017-04-18 Martin Liska <mliska@suse.cz>
|
||||||
|
|
||||||
|
PR gcov-profile/78783
|
||||||
|
* libgcov-driver.c (gcov_get_filename): New function.
|
||||||
|
|
||||||
2017-04-07 Jeff Law <law@redhat.com>
|
2017-04-07 Jeff Law <law@redhat.com>
|
||||||
|
|
||||||
* Makefile.in: Swap definition of LIBGCC_LINKS and inclusion of
|
* Makefile.in: Swap definition of LIBGCC_LINKS and inclusion of
|
||||||
|
|
|
||||||
|
|
@ -852,6 +852,15 @@ gcov_do_dump (struct gcov_info *list, int run_counted)
|
||||||
free (gf.filename);
|
free (gf.filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if IN_GCOV_TOOL
|
||||||
|
const char *
|
||||||
|
__attribute__ ((unused))
|
||||||
|
gcov_get_filename (struct gcov_info *list)
|
||||||
|
{
|
||||||
|
return list->filename;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !IN_GCOV_TOOL
|
#if !IN_GCOV_TOOL
|
||||||
void
|
void
|
||||||
__gcov_dump_one (struct gcov_root *root)
|
__gcov_dump_one (struct gcov_root *root)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue