X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gprof%2Fhist.h;h=515869660685d323b66f56f8257b70b9f2245521;hb=cd9629e1df1a280c19e1daaf6c1195afbab0aca9;hp=df62ef770f418840bb5b9bd67545872b785a1d80;hpb=dc9e099fc0eced486ae2b49455c9da113c11f4ff;p=deliverable%2Fbinutils-gdb.git diff --git a/gprof/hist.h b/gprof/hist.h index df62ef770f..5158696606 100644 --- a/gprof/hist.h +++ b/gprof/hist.h @@ -1,23 +1,58 @@ +/* hist.h + + Copyright (C) 2000-2020 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + #ifndef hist_h #define hist_h -#include "bfd.h" - -extern bfd_vma s_lowpc; /* lowpc from the profile file */ -extern bfd_vma s_highpc; /* highpc from the profile file */ -extern bfd_vma lowpc, highpc; /* range profiled, in UNIT's */ -extern int hist_num_bins; /* number of histogram bins */ -extern int *hist_sample; /* code histogram */ -/* - * Scale factor converting samples to pc values: each sample covers - * HIST_SCALE bytes: - */ +typedef struct histogram +{ + bfd_vma lowpc; + bfd_vma highpc; + unsigned int num_bins; + int *sample; /* Histogram samples (shorts in the file!). */ +} histogram; + +extern histogram * histograms; +extern unsigned num_histograms; + +/* Scale factor converting samples to pc values: + each sample covers HIST_SCALE bytes. */ extern double hist_scale; +extern void hist_read_rec (FILE *, const char *); +extern void hist_write_hist (FILE *, const char *); +extern void hist_assign_samples (void); +extern void hist_print (void); + +/* Checks if ADDRESS is within the range of addresses for which + we have histogram data. Returns 1 if so and 0 otherwise. */ +extern int hist_check_address (unsigned address); + +/* Given a range of addresses for a symbol, find a histogram record + that intersects with this range, and clips the range to that + histogram record, modifying *P_LOWPC and *P_HIGHPC. -extern void hist_read_rec PARAMS ((FILE * ifp, const char *filename)); -extern void hist_write_hist PARAMS ((FILE * ofp, const char *filename)); -extern void hist_assign_samples PARAMS ((void)); -extern void hist_print PARAMS ((void)); + If no intersection is found, *P_LOWPC and *P_HIGHPC will be set to + one unspecified value. If more that one intersection is found, + an error is emitted. */ +extern void hist_clip_symbol_address (bfd_vma *p_lowpc, bfd_vma *p_highpc); #endif /* hist_h */