/* Dump a gcov file, for debugging use.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
- Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+ 2012 Free Software Foundation, Inc.
Contributed by Nathan Sidwell <nathan@codesourcery.com>
Gcov is free software; you can redistribute it and/or modify
#include "coretypes.h"
#include "tm.h"
#include "version.h"
+#include "intl.h"
+#include "diagnostic.h"
#include <getopt.h>
#define IN_GCOV (-1)
#include "gcov-io.h"
main (int argc ATTRIBUTE_UNUSED, char **argv)
{
int opt;
+ const char *p;
+
+ p = argv[0] + strlen (argv[0]);
+ while (p != argv[0] && !IS_DIR_SEPARATOR (p[-1]))
+ --p;
+ progname = p;
+
+ xmalloc_set_program_name (progname);
/* Unlock the stdio streams. */
unlock_std_streams ();
+ gcc_init_libintl ();
+
+ diagnostic_initialize (global_dc, 0);
+
while ((opt = getopt_long (argc, argv, "hlpv", options, NULL)) != -1)
{
switch (opt)
print_version (void)
{
printf ("gcov-dump %s%s\n", pkgversion_string, version_string);
- printf ("Copyright (C) 2009 Free Software Foundation, Inc.\n");
+ printf ("Copyright (C) 2012 Free Software Foundation, Inc.\n");
printf ("This is free software; see the source for copying conditions.\n"
"There is NO warranty; not even for MERCHANTABILITY or \n"
"FITNESS FOR A PARTICULAR PURPOSE.\n\n");
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 (", 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=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 ());
+ }
}
}
dst = gcov_read_unsigned ();
flags = gcov_read_unsigned ();
printf (" %u:%04x", dst, flags);
+ if (flags)
+ {
+ char c = '(';
+
+ if (flags & GCOV_ARC_ON_TREE)
+ printf ("%ctree", c), c = ',';
+ if (flags & GCOV_ARC_FAKE)
+ printf ("%cfake", c), c = ',';
+ if (flags & GCOV_ARC_FALLTHROUGH)
+ printf ("%cfall", c), c = ',';
+ printf (")");
+ }
}
}
}