aboutsummaryrefslogtreecommitdiff
path: root/libgcc/libgcov-merge.c
diff options
context:
space:
mode:
authorRong Xu <xur@google.com>2014-07-11 05:48:07 +0000
committerRong Xu <xur@gcc.gnu.org>2014-07-11 05:48:07 +0000
commitc77556a5d1e225024a4f9dafe5a1a6c316a86b83 (patch)
tree99edf70eadd9518774cdee53c167eb9d38580232 /libgcc/libgcov-merge.c
parentc14e64d4cac8f0b384e55aeff5e7074ce1bcc76d (diff)
downloadgcc-c77556a5d1e225024a4f9dafe5a1a6c316a86b83.zip
gcc-c77556a5d1e225024a4f9dafe5a1a6c316a86b83.tar.gz
gcc-c77556a5d1e225024a4f9dafe5a1a6c316a86b83.tar.bz2
Add gcov-tool: an offline gcda profile processing tool Support.
2014-07-10 Rong Xu <xur@google.com> Add gcov-tool: an offline gcda profile processing tool Support. * gcc/gcov-io.c (gcov_position): Make avaialble to gcov-tool. (gcov_is_error): Ditto. (gcov_read_string): Ditto. (gcov_read_sync): Ditto. * gcc/gcov-io.h: Move counter defines to gcov-counter.def. * gcc/gcov-dump.c (tag_counters): Use gcov-counter.def. * gcc/coverage.c: Ditto. * gcc/gcov-tool.c: Offline gcda profile processing tool. (unlink_gcda_file): Remove one gcda file. (unlink_profile_dir): Remove gcda files from the profile path. (gcov_output_files): Output gcda files to an output dir. (profile_merge): Merge two profiles in directory. (print_merge_usage_message): Print merge usage. (merge_usage): Print merge usage and exit. (do_merge): Driver for profile merge sub-command. (profile_rewrite): Rewrite profile. (print_rewrite_usage_message): Print rewrite usage. (rewrite_usage): Print rewrite usage and exit. (do_rewrite): Driver for profile rewrite sub-command. (print_usage): Print gcov-info usage and exit. (print_version): Print gcov-info version. (process_args): Process arguments. (main): Main routine for gcov-tool. * gcc/Makefile.in: Build and install gcov-tool. * gcc/gcov-counter.def: New file split from gcov-io.h. * libgcc/libgcov-driver.c (gcov_max_filename): Make available to gcov-tool. * libgcc/libgcov-merge.c (__gcov_merge_add): Replace gcov_read_counter() with a Macro. (__gcov_merge_ior): Ditto. (__gcov_merge_time_profile): Ditto. (__gcov_merge_single): Ditto. (__gcov_merge_delta): Ditto. * libgcc/libgcov-util.c (void gcov_set_verbose): Set the verbose flag in the utility functions. (set_fn_ctrs): Utility function for reading gcda files to in-memory gcov_list object link lists. (tag_function): Ditto. (tag_blocks): Ditto. (tag_arcs): Ditto. (tag_lines): Ditto. (tag_counters): Ditto. (tag_summary): Ditto. (read_gcda_finalize): Ditto. (read_gcda_file): Ditto. (ftw_read_file): Ditto. (read_profile_dir_init): Ditto. (gcov_read_profile_dir): Ditto. (gcov_read_counter_mem): Ditto. (gcov_get_merge_weight): Ditto. (merge_wrapper): A wrapper function that calls merging handler. (gcov_merge): Merge two gcov_info objects with weights. (find_match_gcov_info): Find the matched gcov_info in the list. (gcov_profile_merge): Merge two gcov_info object lists. (__gcov_add_counter_op): Process edge profile counter values. (__gcov_ior_counter_op): Process IOR profile counter values. (__gcov_delta_counter_op): Process delta profile counter values. (__gcov_single_counter_op): Process single profile counter values. (fp_scale): Callback function for float-point scaling. (int_scale): Callback function for integer fraction scaling. (gcov_profile_scale): Scaling profile counters. (gcov_profile_normalize): Normalize profile counters. * libgcc/libgcov.h: Add headers and functions for gcov-tool use. (gcov_get_counter): New. (gcov_get_counter_target): Ditto. (struct gcov_info): Make the functions field mutable in gcov-tool compilation. * gcc/doc/gcc.texi: Include gcov-tool.texi. * gcc/doc/gcov-tool.texi: Document for gcov-tool. From-SVN: r212448
Diffstat (limited to 'libgcc/libgcov-merge.c')
-rw-r--r--libgcc/libgcov-merge.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/libgcc/libgcov-merge.c b/libgcc/libgcov-merge.c
index 488d542..f6eacd1 100644
--- a/libgcc/libgcov-merge.c
+++ b/libgcc/libgcov-merge.c
@@ -53,7 +53,7 @@ void
__gcov_merge_add (gcov_type *counters, unsigned n_counters)
{
for (; n_counters; counters++, n_counters--)
- *counters += gcov_read_counter ();
+ *counters += gcov_get_counter ();
}
#endif /* L_gcov_merge_add */
@@ -65,7 +65,7 @@ void
__gcov_merge_ior (gcov_type *counters, unsigned n_counters)
{
for (; n_counters; counters++, n_counters--)
- *counters |= gcov_read_counter ();
+ *counters |= gcov_get_counter_target ();
}
#endif
@@ -81,7 +81,7 @@ __gcov_merge_time_profile (gcov_type *counters, unsigned n_counters)
for (i = 0; i < n_counters; i++)
{
- value = gcov_read_counter ();
+ value = gcov_get_counter_target ();
if (value && (!counters[i] || value < counters[i]))
counters[i] = value;
@@ -109,9 +109,9 @@ __gcov_merge_single (gcov_type *counters, unsigned n_counters)
n_measures = n_counters / 3;
for (i = 0; i < n_measures; i++, counters += 3)
{
- value = gcov_read_counter ();
- counter = gcov_read_counter ();
- all = gcov_read_counter ();
+ value = gcov_get_counter_target ();
+ counter = gcov_get_counter ();
+ all = gcov_get_counter ();
if (counters[0] == value)
counters[1] += counter;
@@ -148,10 +148,10 @@ __gcov_merge_delta (gcov_type *counters, unsigned n_counters)
n_measures = n_counters / 4;
for (i = 0; i < n_measures; i++, counters += 4)
{
- /* last = */ gcov_read_counter ();
- value = gcov_read_counter ();
- counter = gcov_read_counter ();
- all = gcov_read_counter ();
+ /* last = */ gcov_get_counter ();
+ value = gcov_get_counter_target ();
+ counter = gcov_get_counter ();
+ all = gcov_get_counter ();
if (counters[1] == value)
counters[2] += counter;