Home | History | Annotate | Download | only in gprof
      1 /* hist.h
      2 
      3    Copyright (C) 2000-2014 Free Software Foundation, Inc.
      4 
      5    This file is part of GNU Binutils.
      6 
      7    This program is free software; you can redistribute it and/or modify
      8    it under the terms of the GNU General Public License as published by
      9    the Free Software Foundation; either version 3 of the License, or
     10    (at your option) any later version.
     11 
     12    This program is distributed in the hope that it will be useful,
     13    but WITHOUT ANY WARRANTY; without even the implied warranty of
     14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     15    GNU General Public License for more details.
     16 
     17    You should have received a copy of the GNU General Public License
     18    along with this program; if not, write to the Free Software
     19    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
     20    MA 02110-1301, USA.  */
     21 
     22 #ifndef hist_h
     24 #define hist_h
     25 
     26 typedef struct histogram
     27 {
     28   bfd_vma lowpc;
     29   bfd_vma highpc;
     30   unsigned int num_bins;
     31   int *sample;           /* Histogram samples (shorts in the file!).  */
     32 } histogram;
     33 
     34 extern histogram * histograms;
     35 extern unsigned    num_histograms;
     36 
     37 /* Scale factor converting samples to pc values:
     38    each sample covers HIST_SCALE bytes.  */
     39 extern double hist_scale;
     40 
     41 extern void hist_read_rec        (FILE *, const char *);
     42 extern void hist_write_hist      (FILE *, const char *);
     43 extern void hist_assign_samples  (void);
     44 extern void hist_print           (void);
     45 
     46 /* Checks if ADDRESS is within the range of addresses for which
     47    we have histogram data.  Returns 1 if so and 0 otherwise.  */
     48 extern int hist_check_address (unsigned address);
     49 
     50 /* Given a range of addresses for a symbol, find a histogram record
     51    that intersects with this range, and clips the range to that
     52    histogram record, modifying *P_LOWPC and *P_HIGHPC.
     53 
     54    If no intersection is found, *P_LOWPC and *P_HIGHPC will be set to
     55    one unspecified value.  If more that one intersection is found,
     56    an error is emitted.  */
     57 extern void hist_clip_symbol_address (bfd_vma *p_lowpc, bfd_vma *p_highpc);
     58 
     59 #endif /* hist_h */
     60