From 5014df5d02d9d90bb0a749a035f86bbfbe94bfa4 Mon Sep 17 00:00:00 2001 From: nathan Date: Mon, 7 Nov 2011 18:14:46 +0000 Subject: libgcc/ * libgcov.c (struct gcov_fn_buffer): New struct. (buffer_fn_data): New helper. (gcov_exit): Rework for new gcov data structures. gcc/ * gcov.c (object_summary): Replace with ... (object_runs): ... this. (process_file): Remove functions with no data. (generate_results): Ignore files with no lines. (release_function): New helper, broken out of ... (release_structures): ... here. Use it. (read_count_file): Adjust for new data file format. (output_lines): Use object_runs. * gcov-io.h (GCOV_TAG_OBJECT_SUMMARY): Obsolete. (struct gcov_ctr_info): Move definition. (struct gcov_fn_info): Add key field, use gcov_ctr_info for trailing array. (struct gcov_info): Add merge function array, remove mask and counts. Trailing array is array of pointers to function info. * coverage.c (struct function_list): Replace counter numbers with counter arrays. Add fndecl field. GTYify. (counts_entry): Remove chain workspace. (functions_head): GTYify. (prg_n_ctrs): Remove. (fn_v_ctrs): New. (tree_ctr_tables): Remove. (read_counts_file): Cope with blank entries and expect program summaries before functions. Don't warn on missing entries. (coverage_counter_alloc): Allocate individual function arrays. (tree_coverage_counter_ref, tree_coverage_counter_addr): Adjust for individual function arrays. (coverage_end_function): GTYify function list object. Finalize function's counter arrays. (build_var): New. Create a counter-related variable with appropriate linkage. (build_fn_info_type): Adjust for new runtime structure. (build_fn_info_value): Rename to ... (build_fn_info): ... here. Build new format data. (build_ctr_info_type, build_ctr_info_value): Remove. (build_info_type): New. Build new format data structure. (build_info): Adjust for new format data. (create_coverage): Likewise. * gcov-dump.c (tag_function): Recognize placeholders. gcc/testsuite/ * gcc.dg/profile-dir-1.c: Adjust final scan. * gcc.dg/profile-dir-2.c: Adjust final scan. * gcc.dg/profile-dir-3.c: Adjust final scan. * gcc.misc-tests/gcov.exp: Adjust regexp. * gcc.misc-tests/gcov-12.c: New. * gcc.misc-tests/gcov-13.c: New. * gcc.misc-tests/gcovpart-13b.c: New. * gcc.misc-tests/gcov-14.c: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@181105 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/gcov-dump.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'gcc/gcov-dump.c') diff --git a/gcc/gcov-dump.c b/gcc/gcov-dump.c index 200917053fb..a6c5b33c622 100644 --- a/gcc/gcov-dump.c +++ b/gcc/gcov-dump.c @@ -276,23 +276,28 @@ dump_file (const char *filename) static void tag_function (const char *filename ATTRIBUTE_UNUSED, - unsigned tag ATTRIBUTE_UNUSED, unsigned length ATTRIBUTE_UNUSED) + unsigned tag ATTRIBUTE_UNUSED, unsigned length) { unsigned long pos = gcov_position (); - printf (" ident=%u", gcov_read_unsigned ()); - printf (", lineno_checksum=0x%08x", gcov_read_unsigned ()); - printf (", cfg_checksum_checksum=0x%08x", gcov_read_unsigned ()); - - if (gcov_position () - pos < length) + if (!length) + printf (" placeholder"); + else { - const char *name; + printf (" ident=%u", gcov_read_unsigned ()); + printf (", lineno_checksum=0x%08x", gcov_read_unsigned ()); + printf (", cfg_checksum_checksum=0x%08x", gcov_read_unsigned ()); - name = gcov_read_string (); - printf (", `%s'", name ? name : "NULL"); - name = gcov_read_string (); - printf (" %s", name ? name : "NULL"); - printf (":%u", gcov_read_unsigned ()); + if (gcov_position () - pos < length) + { + const char *name; + + name = gcov_read_string (); + printf (", `%s'", name ? name : "NULL"); + name = gcov_read_string (); + printf (" %s", name ? name : "NULL"); + printf (":%u", gcov_read_unsigned ()); + } } } -- cgit v1.2.1