/* gmon_io.c - Input and output from/to gmon.out files.
- Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005
- Free Software Foundation, Inc.
+ Copyright (C) 1999-2015 Free Software Foundation, Inc.
This file is part of GNU Binutils.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
02110-1301, USA. */
\f
#include "gprof.h"
+#include "binary-io.h"
#include "search_list.h"
#include "source.h"
#include "symtab.h"
if (strcmp (filename, "-") == 0)
{
ifp = stdin;
-#ifdef SET_BINARY
SET_BINARY (fileno (stdin));
-#endif
}
else
{
if (!histograms)
{
- histograms = xmalloc (sizeof (struct histogram));
+ num_histograms = 1;
+ histograms = (struct histogram *) xmalloc (sizeof (struct histogram));
histograms->lowpc = tmp.low_pc;
histograms->highpc = tmp.high_pc;
histograms->num_bins = hist_num_bins;
- histograms->sample = xmalloc (hist_num_bins * sizeof (int));
+ hist_scale = (double)((tmp.high_pc - tmp.low_pc) / sizeof (UNIT))
+ / hist_num_bins;
+ histograms->sample = (int *) xmalloc (hist_num_bins * sizeof (int));
memset (histograms->sample, 0,
hist_num_bins * sizeof (int));
}
cg_tally (from_pc, self_pc, count);
}
- fclose (ifp);
-
if (hz == HZ_WRONG)
{
/* How many ticks per second? If we can't tell, report
done (1);
}
+ if (ifp != stdin)
+ fclose (ifp);
+
if (output_style & STYLE_GMON_INFO)
{
printf (_("File `%s' (version %d) contains:\n"),