Home | History | Annotate | Line # | Download | only in gprof
README revision 1.1.1.2
      1      1.1     skrll 		README for GPROF
      2      1.1     skrll 
      3  1.1.1.2  christos This is the GNU profiler.  It is distributed with other "binary
      4  1.1.1.2  christos utilities" which should be in ../binutils.  See ../binutils/README for
      5      1.1     skrll more general notes, including where to send bug reports.
      6      1.1     skrll 
      7      1.1     skrll This file documents the changes and new features available with this
      8      1.1     skrll version of GNU gprof.
      9      1.1     skrll 
     10      1.1     skrll * New Features
     11      1.1     skrll 
     12      1.1     skrll  o Long options
     13      1.1     skrll 
     14      1.1     skrll  o Supports generalized file format, without breaking backward compatibility:
     15      1.1     skrll    new file format supports basic-block execution counts and non-realtime
     16      1.1     skrll    histograms (see below)
     17      1.1     skrll 
     18      1.1     skrll  o Supports profiling at the line level: flat profiles, call-graph profiles,
     19      1.1     skrll    and execution-counts can all be displayed at a level that identifies
     20      1.1     skrll    individual lines rather than just functions
     21      1.1     skrll 
     22      1.1     skrll  o Test-coverage support (similar to Sun tcov program): source files
     23      1.1     skrll    can be annotated with the number of times a function was invoked
     24      1.1     skrll    or with the number of times each basic-block in a function was
     25      1.1     skrll    executed
     26      1.1     skrll 
     27      1.1     skrll  o Generalized histograms: not just execution-time, but arbitrary
     28      1.1     skrll    histograms are support (for example, performance counter based
     29      1.1     skrll    profiles)
     30      1.1     skrll 
     31      1.1     skrll  o Powerful mechanism to select data to be included/excluded from
     32      1.1     skrll    analysis and/or output
     33      1.1     skrll 
     34      1.1     skrll  o Support for DEC OSF/1 v3.0
     35      1.1     skrll 
     36      1.1     skrll  o Full cross-platform profiling support: gprof uses BFD to support
     37      1.1     skrll    arbitrary, non-native object file formats and non-native byte-orders
     38      1.1     skrll    (this feature has not been tested yet)
     39      1.1     skrll 
     40      1.1     skrll  o In the call-graph function index, static function names are now
     41      1.1     skrll    printed together with the filename in which the function was defined
     42      1.1     skrll    (required bfd_find_nearest_line() support and symbolic debugging
     43      1.1     skrll     information to be present in the executable file)
     44      1.1     skrll 
     45      1.1     skrll  o Major overhaul of source code (compiles cleanly with -Wall, etc.)
     46      1.1     skrll 
     47      1.1     skrll * Supported Platforms
     48      1.1     skrll 
     49      1.1     skrll The current version is known to work on:
     50      1.1     skrll 
     51      1.1     skrll  o DEC OSF/1 v3.0
     52      1.1     skrll 	All features supported.
     53      1.1     skrll 
     54      1.1     skrll  o SunOS 4.1.x
     55      1.1     skrll 	All features supported.
     56      1.1     skrll 
     57      1.1     skrll  o Solaris 2.3
     58      1.1     skrll 	Line-level profiling unsupported because bfd_find_nearest_line()
     59      1.1     skrll 	is not fully implemented for Elf binaries.
     60      1.1     skrll 
     61      1.1     skrll  o HP-UX 9.01
     62      1.1     skrll 	Line-level profiling unsupported because bfd_find_nearest_line()
     63      1.1     skrll 	is not fully implemented for SOM binaries.
     64      1.1     skrll 
     65      1.1     skrll * Detailed Description
     66      1.1     skrll 
     67      1.1     skrll ** User Interface Changes
     68      1.1     skrll 
     69      1.1     skrll The command-line interface is backwards compatible with earlier
     70      1.1     skrll versions of GNU gprof and Berkeley gprof.  The only exception is
     71      1.1     skrll the option to delete arcs from the call graph.  The old syntax
     72      1.1     skrll was:
     73      1.1     skrll 
     74      1.1     skrll 	-k fromname toname
     75      1.1     skrll 
     76      1.1     skrll while the new syntax is:
     77      1.1     skrll 
     78      1.1     skrll 	-k fromname/toname
     79      1.1     skrll 
     80      1.1     skrll This change was necessary to be compatible with long-option parsing.
     81      1.1     skrll Also, "fromname" and "toname" can now be arbitrary symspecs rather
     82      1.1     skrll than just function names (see below for an explanation of symspecs).
     83      1.1     skrll For example, option "-k gprof.c/" suppresses all arcs due to calls out
     84      1.1     skrll of file "gprof.c".
     85      1.1     skrll 
     86      1.1     skrll *** Sym Specs
     87      1.1     skrll 
     88      1.1     skrll It is often necessary to apply gprof only to specific parts of a
     89      1.1     skrll program.  GNU gprof has a simple but powerful mechanism to achieve
     90      1.1     skrll this.  So called {\em symspecs\/} provide the foundation for this
     91      1.1     skrll mechanism.  A symspec selects the parts of a profiled program to which
     92      1.1     skrll an operation should be applied to.  The syntax of a symspec is
     93      1.1     skrll simple:
     94      1.1     skrll 
     95      1.1     skrll 	  filename_containing_a_dot
     96      1.1     skrll 	| funcname_not_containing_a_dot
     97      1.1     skrll 	| linenumber
     98      1.1     skrll 	| ( [ any_filename ] `:' ( any_funcname | linenumber ) )
     99      1.1     skrll 
    100      1.1     skrll Here are some examples:
    101      1.1     skrll 
    102      1.1     skrll 	main.c			Selects everything in file "main.c"---the
    103      1.1     skrll 				dot in the string tells gprof to interpret
    104      1.1     skrll 				the string as a filename, rather than as
    105      1.1     skrll 				a function name.  To select a file whose
    106      1.1     skrll 				name does contain a dot, a trailing colon
    107      1.1     skrll 				should be specified.  For example, "odd:" is
    108      1.1     skrll 				interpreted as the file named "odd".
    109      1.1     skrll 
    110      1.1     skrll 	main			Selects all functions named "main".  Notice
    111      1.1     skrll 				that there may be multiple instances of the
    112      1.1     skrll 				same function name because some of the
    113      1.1     skrll 				definitions may be local (i.e., static).
    114      1.1     skrll 				Unless a function name is unique in a program,
    115      1.1     skrll 				you must use the colon notation explained
    116      1.1     skrll 				below to specify a function from a specific
    117      1.1     skrll 				source file.  Sometimes, functionnames contain
    118      1.1     skrll 				dots.  In such cases, it is necessary to
    119      1.1     skrll 				add a leading colon to the name.  For example,
    120      1.1     skrll 				":.mul" selects function ".mul".
    121  1.1.1.2  christos 
    122      1.1     skrll 	main.c:main		Selects function "main" in file "main.c".
    123      1.1     skrll 
    124      1.1     skrll 	main.c:134		Selects line 134 in file "main.c".
    125      1.1     skrll 
    126      1.1     skrll IMPLEMENTATION NOTE: The source code uses the type sym_id for symspecs.
    127      1.1     skrll At some point, this probably ought to be changed to "sym_spec" to make
    128      1.1     skrll reading the code easier.
    129      1.1     skrll 
    130      1.1     skrll *** Long options
    131      1.1     skrll 
    132      1.1     skrll GNU gprof now supports long options.  The following is a list of all
    133      1.1     skrll supported options.  Options that are listed without description
    134      1.1     skrll operate in the same manner as the corresponding option in older
    135      1.1     skrll versions of gprof.
    136      1.1     skrll 
    137      1.1     skrll Short Form:	Long Form:
    138      1.1     skrll -----------	----------
    139      1.1     skrll -l		--line
    140      1.1     skrll 			Request profiling at the line-level rather
    141      1.1     skrll 			than just at the function level.  Source
    142      1.1     skrll 			lines are identified by symbols of the form:
    143      1.1     skrll 
    144      1.1     skrll 				func (file:line)
    145      1.1     skrll 
    146      1.1     skrll 			where "func" is the function name, "file" is the
    147      1.1     skrll 			file name and "line" is the line-number that
    148      1.1     skrll 			corresponds to the line.
    149      1.1     skrll 
    150      1.1     skrll 			To work properly, the binary must contain symbolic
    151      1.1     skrll 			debugging information.  This means that the source
    152      1.1     skrll 			have to be translated with option "-g" specified.
    153      1.1     skrll 			Functions for which there is no symbolic debugging
    154      1.1     skrll 			information available are treated as if "--line"
    155      1.1     skrll 			had not been specified.  However, the line number
    156      1.1     skrll 			printed with such symbols is usually incorrect
    157      1.1     skrll 			and should be ignored.
    158      1.1     skrll 
    159      1.1     skrll -a		--no-static
    160      1.1     skrll -A[symspec]	--annotated-source[=symspec]
    161      1.1     skrll 			Request output in the form of annotated source
    162      1.1     skrll 			files.  If "symspec" is specified, print output only
    163      1.1     skrll 			for symbols selected by "symspec".  If the option
    164      1.1     skrll 			is specified multiple times, annotated output is
    165      1.1     skrll 			generated for the union of all symspecs.
    166      1.1     skrll 
    167      1.1     skrll 			Examples:
    168      1.1     skrll 
    169      1.1     skrll 			  -A		Prints annotated source for all
    170      1.1     skrll 					source files.
    171      1.1     skrll 			  -Agprof.c	Prints annotated source for file
    172      1.1     skrll 					gprof.c.
    173      1.1     skrll 			  -Afoobar	Prints annotated source for files
    174      1.1     skrll 					containing a function named "foobar".
    175      1.1     skrll 					The entire file will be printed, but
    176      1.1     skrll 					only the function itself will be
    177      1.1     skrll 					annotated with profile data.
    178      1.1     skrll 
    179      1.1     skrll -J[symspec]	--no-annotated-source[=symspec]
    180      1.1     skrll 			Suppress annotated source output.  If specified
    181      1.1     skrll 			without argument, annotated output is suppressed
    182      1.1     skrll 			completely.  With an argument, annotated output
    183      1.1     skrll 			is suppressed only for the symbols selected by
    184      1.1     skrll 			"symspec".  If the option is specified multiple
    185      1.1     skrll 			times, annotated output is suppressed for the
    186      1.1     skrll 			union of all symspecs.  This option has lower
    187      1.1     skrll 			precedence than --annotated-source
    188      1.1     skrll 
    189      1.1     skrll -p[symspec]	--flat-profile[=symspec]
    190      1.1     skrll 			Request output in the form of a flat profile
    191      1.1     skrll 			(unless any other output-style option is specified,
    192      1.1     skrll 			 this option is turned on by default).  If
    193      1.1     skrll 			"symspec" is specified, include only symbols
    194      1.1     skrll 			selected by "symspec" in flat profile.  If the
    195      1.1     skrll 			option is specified multiple times, the flat
    196      1.1     skrll 			profile includes symbols selected by the union
    197      1.1     skrll 			of all symspecs.
    198  1.1.1.2  christos 
    199      1.1     skrll -P[symspec]	--no-flat-profile[=symspec]
    200      1.1     skrll 			Suppress output in the flat profile.  If given
    201      1.1     skrll 			without an argument, the flat profile is suppressed
    202      1.1     skrll 			completely.  If "symspec" is specified, suppress
    203      1.1     skrll 			the selected symbols in the flat profile.  If the
    204      1.1     skrll 			option is specified multiple times, the union of
    205      1.1     skrll 			the selected symbols is suppressed.  This option
    206      1.1     skrll 			has lower precedence than --flat-profile.
    207      1.1     skrll 
    208      1.1     skrll -q[symspec]	--graph[=symspec]
    209      1.1     skrll 			Request output in the form of a call-graph
    210      1.1     skrll 			(unless any other output-style option is specified,
    211      1.1     skrll 			 this option is turned on by default).  If "symspec"
    212      1.1     skrll 			is specified, include only symbols selected by
    213      1.1     skrll 			"symspec" in the call-graph.  If the option is
    214      1.1     skrll 			specified multiple times, the call-graph includes
    215      1.1     skrll 			symbols selected by the union of all symspecs.
    216      1.1     skrll 
    217      1.1     skrll -Q[symspec]	--no-graph[=symspec]
    218      1.1     skrll 			Suppress output in the call-graph.  If given without
    219      1.1     skrll 			an argument, the call-graph is suppressed completely.
    220      1.1     skrll 			With a "symspec", suppress the selected symbols
    221      1.1     skrll 			from the call-graph.  If the option is specified
    222      1.1     skrll 			multiple times, the union of the selected symbols
    223      1.1     skrll 			is suppressed.  This option has lower precedence
    224      1.1     skrll 			than --graph.
    225      1.1     skrll 
    226      1.1     skrll -C[symspec]	--exec-counts[=symspec]
    227      1.1     skrll 			Request output in the form of execution counts.
    228      1.1     skrll 			If "symspec" is present, include only symbols
    229      1.1     skrll 			selected by "symspec" in the execution count
    230      1.1     skrll 			listing.  If the option is specified multiple
    231      1.1     skrll 			times, the execution count listing includes
    232      1.1     skrll 			symbols selected by the union of all symspecs.
    233      1.1     skrll 
    234      1.1     skrll -Z[symspec]	--no-exec-counts[=symspec]
    235      1.1     skrll 			Suppress output in the execution count listing.
    236      1.1     skrll 			If given without an argument, the listing is
    237      1.1     skrll 			suppressed completely.  With a "symspec", suppress
    238      1.1     skrll 			the selected symbols from the call-graph.  If the
    239      1.1     skrll 			option is specified multiple times, the union of
    240      1.1     skrll 			the selected symbols is suppressed.  This option
    241      1.1     skrll 			has lower precedence than --exec-counts.
    242      1.1     skrll 
    243      1.1     skrll -i		--file-info
    244      1.1     skrll 			Print information about the profile files that
    245      1.1     skrll 			are read.  The information consists of the
    246      1.1     skrll 			number and types of records present in the
    247      1.1     skrll 			profile file.  Currently, a profile file can
    248      1.1     skrll 			contain any number and any combination of histogram,
    249      1.1     skrll 			call-graph, or basic-block count records.
    250      1.1     skrll 
    251      1.1     skrll -s		--sum
    252      1.1     skrll 
    253      1.1     skrll -x		--all-lines
    254      1.1     skrll 			This option affects annotated source output only.
    255      1.1     skrll 			By default, only the lines at the beginning of
    256      1.1     skrll 			a basic-block are annotated.  If this option is
    257      1.1     skrll 			specified, every line in a basic-block is annotated
    258      1.1     skrll 			by repeating the annotation for the first line.
    259      1.1     skrll 			This option is identical to tcov's "-a".
    260      1.1     skrll 
    261      1.1     skrll -I dirs		--directory-path=dirs
    262      1.1     skrll 			This option affects annotated source output only.
    263      1.1     skrll 			Specifies the list of directories to be searched
    264      1.1     skrll 			for source files.  The argument "dirs" is a colon
    265      1.1     skrll 			separated list of directories.  By default, gprof
    266      1.1     skrll 			searches for source files relative to the current
    267      1.1     skrll 			working directory only.
    268      1.1     skrll 
    269      1.1     skrll -z		--display-unused-functions
    270      1.1     skrll 
    271      1.1     skrll -m num		--min-count=num
    272      1.1     skrll 			This option affects annotated source and execution
    273      1.1     skrll 			count output only.  Symbols that are executed
    274      1.1     skrll 			less than "num" times are suppressed.  For annotated
    275      1.1     skrll 			source output, suppressed symbols are marked
    276      1.1     skrll 			by five hash-marks (#####).  In an execution count
    277      1.1     skrll 			output, suppressed symbols do not appear at all.
    278      1.1     skrll 
    279      1.1     skrll -L		--print-path
    280      1.1     skrll 			Normally, source filenames are printed with the path
    281      1.1     skrll 			component suppressed.  With this option, gprof
    282      1.1     skrll 			can be forced to print the full pathname of
    283      1.1     skrll 			source filenames.  The full pathname is determined
    284      1.1     skrll 			from symbolic debugging information in the image file
    285      1.1     skrll 			and is relative to the directory in which the compiler
    286      1.1     skrll 			was invoked.
    287      1.1     skrll 
    288      1.1     skrll -y		--separate-files
    289      1.1     skrll 			This option affects annotated source output only.
    290      1.1     skrll 			Normally, gprof prints annotated source files
    291      1.1     skrll 			to standard-output.  If this option is specified,
    292      1.1     skrll 			annotated source for a file named "path/filename"
    293      1.1     skrll 			is generated in the file "filename-ann".  That is,
    294      1.1     skrll 			annotated output is {\em always\/} generated in
    295      1.1     skrll 			gprof's current working directory.  Care has to
    296      1.1     skrll 			be taken if a program consists of files that have
    297      1.1     skrll 			identical filenames, but distinct paths.
    298      1.1     skrll 
    299      1.1     skrll -c		--static-call-graph
    300      1.1     skrll 
    301      1.1     skrll -t num		--table-length=num
    302      1.1     skrll 			This option affects annotated source output only.
    303      1.1     skrll 			After annotating a source file, gprof generates
    304      1.1     skrll 			an execution count summary consisting of a table
    305      1.1     skrll 			of lines with the top execution counts.  By
    306      1.1     skrll 			default, this table is ten entries long.
    307      1.1     skrll 			This option can be used to change the table length
    308      1.1     skrll 			or, by specifying an argument value of 0, it can be
    309      1.1     skrll 			suppressed completely.
    310      1.1     skrll 
    311      1.1     skrll -n symspec	--time=symspec
    312      1.1     skrll 			Only symbols selected by "symspec" are considered
    313      1.1     skrll 			in total and percentage time computations.
    314      1.1     skrll 			However, this option does not affect percentage time
    315      1.1     skrll 			computation for the flat profile.
    316      1.1     skrll 			If the option is specified multiple times, the union
    317      1.1     skrll 			of all selected symbols is used in time computations.
    318      1.1     skrll 
    319      1.1     skrll -N		--no-time=symspec
    320      1.1     skrll 			Exclude the symbols selected by "symspec" from
    321      1.1     skrll 			total and percentage time computations.
    322      1.1     skrll 			However, this option does not affect percentage time
    323      1.1     skrll 			computation for the flat profile.
    324      1.1     skrll 			This option is ignored if any --time options are
    325      1.1     skrll 			specified.
    326      1.1     skrll 
    327      1.1     skrll -w num		--width=num
    328      1.1     skrll 			Sets the output line width.  Currently, this option
    329      1.1     skrll 			affects the printing of the call-graph function index
    330      1.1     skrll 			only.
    331      1.1     skrll 
    332      1.1     skrll -e		<no long form---for backwards compatibility only>
    333      1.1     skrll -E		<no long form---for backwards compatibility only>
    334      1.1     skrll -f		<no long form---for backwards compatibility only>
    335      1.1     skrll -F		<no long form---for backwards compatibility only>
    336      1.1     skrll -k		<no long form---for backwards compatibility only>
    337      1.1     skrll -b		--brief
    338      1.1     skrll -dnum		--debug[=num]
    339      1.1     skrll 
    340      1.1     skrll -h		--help
    341      1.1     skrll 			Prints a usage message.
    342      1.1     skrll 
    343      1.1     skrll -O name		--file-format=name
    344      1.1     skrll 			Selects the format of the profile data files.
    345      1.1     skrll 			Recognized formats are "auto", "bsd", "magic",
    346      1.1     skrll 			and "prof".  The last one is not yet supported.
    347      1.1     skrll 			Format "auto" attempts to detect the file format
    348      1.1     skrll 			automatically (this is the default behavior).
    349      1.1     skrll 			It attempts to read the profile data files as
    350      1.1     skrll 			"magic" files and if this fails, falls back to
    351      1.1     skrll 			the "bsd" format.  "bsd" forces gprof to read
    352      1.1     skrll 			the data files in the BSD format.  "magic" forces
    353      1.1     skrll 			gprof to read the data files in the "magic" format.
    354      1.1     skrll 
    355      1.1     skrll -T		--traditional
    356      1.1     skrll -v		--version
    357      1.1     skrll 
    358      1.1     skrll ** File Format Changes
    359      1.1     skrll 
    360      1.1     skrll The old BSD-derived format used for profile data does not contain a
    361      1.1     skrll magic cookie that allows to check whether a data file really is a
    362      1.1     skrll gprof file.  Furthermore, it does not provide a version number, thus
    363      1.1     skrll rendering changes to the file format almost impossible.  GNU gprof
    364      1.1     skrll uses a new file format that provides these features.  For backward
    365      1.1     skrll compatibility, GNU gprof continues to support the old BSD-derived
    366      1.1     skrll format, but not all features are supported with it.  For example,
    367      1.1     skrll basic-block execution counts cannot be accommodated by the old file
    368      1.1     skrll format.
    369      1.1     skrll 
    370      1.1     skrll The new file format is defined in header file \file{gmon_out.h}.  It
    371      1.1     skrll consists of a header containing the magic cookie and a version number,
    372      1.1     skrll as well as some spare bytes available for future extensions.  All data
    373      1.1     skrll in a profile data file is in the native format of the host on which
    374      1.1     skrll the profile was collected.  GNU gprof adapts automatically to the
    375      1.1     skrll byte-order in use.
    376      1.1     skrll 
    377      1.1     skrll In the new file format, the header is followed by a sequence of
    378      1.1     skrll records.  Currently, there are three different record types: histogram
    379      1.1     skrll records, call-graph arc records, and basic-block execution count
    380      1.1     skrll records.  Each file can contain any number of each record type.  When
    381      1.1     skrll reading a file, GNU gprof will ensure records of the same type are
    382      1.1     skrll compatible with each other and compute the union of all records.  For
    383      1.1     skrll example, for basic-block execution counts, the union is simply the sum
    384      1.1     skrll of all execution counts for each basic-block.
    385      1.1     skrll 
    386      1.1     skrll *** Histogram Records
    387      1.1     skrll 
    388      1.1     skrll Histogram records consist of a header that is followed by an array of
    389      1.1     skrll bins.  The header contains the text-segment range that the histogram
    390      1.1     skrll spans, the size of the histogram in bytes (unlike in the old BSD
    391      1.1     skrll format, this does not include the size of the header), the rate of the
    392      1.1     skrll profiling clock, and the physical dimension that the bin counts
    393      1.1     skrll represent after being scaled by the profiling clock rate.  The
    394      1.1     skrll physical dimension is specified in two parts: a long name of up to 15
    395      1.1     skrll characters and a single character abbreviation.  For example, a
    396      1.1     skrll histogram representing real-time would specify the long name as
    397      1.1     skrll "seconds" and the abbreviation as "s".  This feature is useful for
    398      1.1     skrll architectures that support performance monitor hardware (which,
    399      1.1     skrll fortunately, is becoming increasingly common).  For example, under DEC
    400      1.1     skrll OSF/1, the "uprofile" command can be used to produce a histogram of,
    401      1.1     skrll say, instruction cache misses.  In this case, the dimension in the
    402      1.1     skrll histogram header could be set to "i-cache misses" and the abbreviation
    403      1.1     skrll could be set to "1" (because it is simply a count, not a physical
    404      1.1     skrll dimension).  Also, the profiling rate would have to be set to 1 in
    405      1.1     skrll this case.
    406      1.1     skrll 
    407      1.1     skrll Histogram bins are 16-bit numbers and each bin represent an equal
    408      1.1     skrll amount of text-space.  For example, if the text-segment is one
    409      1.1     skrll thousand bytes long and if there are ten bins in the histogram, each
    410      1.1     skrll bin represents one hundred bytes.
    411      1.1     skrll 
    412      1.1     skrll 
    413      1.1     skrll *** Call-Graph Records
    414      1.1     skrll 
    415      1.1     skrll Call-graph records have a format that is identical to the one used in
    416      1.1     skrll the BSD-derived file format.  It consists of an arc in the call graph
    417      1.1     skrll and a count indicating the number of times the arc was traversed
    418      1.1     skrll during program execution.  Arcs are specified by a pair of addresses:
    419      1.1     skrll the first must be within caller's function and the second must be
    420      1.1     skrll within the callee's function.  When performing profiling at the
    421      1.1     skrll function level, these addresses can point anywhere within the
    422      1.1     skrll respective function.  However, when profiling at the line-level, it is
    423      1.1     skrll better if the addresses are as close to the call-site/entry-point as
    424      1.1     skrll possible.  This will ensure that the line-level call-graph is able to
    425      1.1     skrll identify exactly which line of source code performed calls to a
    426      1.1     skrll function.
    427      1.1     skrll 
    428      1.1     skrll *** Basic-Block Execution Count Records
    429      1.1     skrll 
    430      1.1     skrll Basic-block execution count records consist of a header followed by a
    431      1.1     skrll sequence of address/count pairs.  The header simply specifies the
    432      1.1     skrll length of the sequence.  In an address/count pair, the address
    433      1.1     skrll identifies a basic-block and the count specifies the number of times
    434      1.1     skrll that basic-block was executed.  Any address within the basic-address can
    435      1.1     skrll be used.
    436      1.1     skrll 
    437      1.1     skrll IMPLEMENTATION NOTE: gcc -a can be used to instrument a program to
    438      1.1     skrll record basic-block execution counts.  However, the __bb_exit_func()
    439      1.1     skrll that is currently present in libgcc2.c does not generate a gmon.out
    440      1.1     skrll file in a suitable format.  This should be fixed for future releases
    441      1.1     skrll of gcc.  In the meantime, contact davidm (a] cs.arizona.edu for a version
    442      1.1     skrll of __bb_exit_func() to is appropriate.
    443  1.1.1.2  christos 
    445  1.1.1.2  christos Copyright (C) 2012-2015 Free Software Foundation, Inc.
    446  1.1.1.2  christos 
    447  1.1.1.2  christos Copying and distribution of this file, with or without modification,
    448  1.1.1.2  christos are permitted in any medium without royalty provided the copyright
    449                    notice and this notice are preserved.
    450