3 * gprof.c (main): Cast getenv return value.
7 * Makefile.in (TAGS): New target.
11 * Makefile.in (DISTSTUFF): Rename to GEN_FILES, to avoid confusion.
12 (all): Depend on $(GEN_FILES), not diststuff (which also depends
17 * sym_ids.c: Include <ctype.h>.
21 * Makefile.in (diststuff): Also make info.
22 (mostlyclean): Don't remove gprof.info*.
23 (maintainer-clean realclean): Also remove *.info*.
29 * Makefile.in: Add dependecies for $(OBJS) on header files.
31 * cg_print.c (print_cycle, print_members, cg_print_index): Fix new
32 style output format to make it consistent.
33 * dummy.c (find_call): Fix typo in error message.
37 * Makefile.in (maintainer-clean): New target, synonym for
42 * Makefile.in (install): Don't install in $(tooldir).
46 NS32K changes from Ian Dall:
47 * configure.in: Use ns32k, not ns532.
48 * ns532.c: Include symtab.h.
49 (find_call): Renamed from findcall. Print a message.
50 * ns532.h: Remove dummy.h comments.
54 * Makefile.in (install): Remove "brokensed" hack, unnecessary now
55 that we're using autoconf.
59 * core.c (get_src_info): Cast arg 7 of bfd_find_nearest_line
60 to proper type of "unsigned int *".
64 * configure.in: Use changequote around use of [].
68 * Makefile.in (distclean, realclean): Remove config.cache and
73 * Makefile.in (Makefile): Added config.status to dependency list.
74 (config.status): New target.
75 (SHELL): New definition.
79 * Makefile.in (install): Depend on "all".
83 * Makefile.in: Change all references to MY_MACHINE to MY_TARGET,
84 to match configure script.
88 * gen-c-prog.awk: Changed reference to "make-c-prog.awk" in
89 comment emitted by this script to gen-c-prog.awk.
91 * Makefile.in, configure.in: Converted to use autoconf.
92 * configure: New file, generated with autoconf 2.3.
93 * config/{mt-alpha, mt-dummy, mt-i386, mt-ns532, mt-sparc,
94 mt-tahoe, mt-vax}: Removed.
98 * __bb_exit_func.c: New file, from David Mosberger-Tang.
102 * All *.c: More cleanup towards GNU format.
104 * gmon_out.h (struct gmon_hist_hdr, struct gmon_cg_arc_record):
105 replaced sizeof (bfd_vma) by size (char*) because Ken tells me
106 that bfd_vma is only guaranteed to be at least as big as a pointer.
108 (GMON_Record_tag): added explicit enumeration values to ensure
109 compatibility across compilers.
111 * gmon_io.c (get_vma, put_vma): replaced sizeof(bfd_vma) by
116 * All *.c and *.h files: Ran "indent -gnu". Cleaned up a couple
117 of constructs GNU indent couldn't handle. Block comments not yet
118 rewritten in GNU format.
120 * gprof.c (VERSION): Changed to 2.6, to get in sync for next
125 * symtab.c (symtab_finalize): ensure globals symbols really
126 are favored over static ones---even if their name looks less
127 preferable; this is important for HP-UX; for example, there
128 is a static label Ltext_something that aliases the global
131 * hist.c (hist_print): auto-scaling is now in effect for FSF-style
132 output only; also, auto-scaling is now performed based on
133 per-call, rather than total execution time, which is what it was
136 * gprof.h (File_Format): new type.
138 * gprof.c (VERSION): upped to 2.7---seems to be completely out of
139 sync with Cygnus version numbers though...
141 (long_options): renamed --gmon-info to --file-info, --width added,
142 renamed --old-file-format to --file-format
143 (main): dito; also added support to read prof files, but as
144 mon_out_read() is not implemented, it's #ifdef'd out for now
146 (usage): update to reflect new options.
148 * gmon_io.c: replaced "old_file_format" by more general
151 * gmon.h (struct raw_phdr): fixed declaration for OSF/1.
153 * core.c (core_sym_class): added back check for __gnu_compiled and
154 ___gnu_compiled for the benefit of systems without
155 bfd_find_nearest_line() support
157 (get_src_info): now the libbfd is fixed, invoke bfd_find_nearest_line()
158 with section-relative addresses
160 (core_create_function_syms): get_src_info() calls are currently
161 enabled for OSF/1 only. It appears to work allright for SunOS
162 4.1.x as well, but on SPARCs it gets painfully slow with the
163 current implementation of aout_32_find_nearest_line();
164 unfortunately, this means that static functions will not have their
165 filename printed in the call-graph function index; line-level
166 profiling should still work, but requires some patience
168 * cg_print.c (cg_print_index): sanitized printing of index when
169 using FSF-style output; in particular, output width is now controlled
170 via option --width and the function tries hard to keep columns
171 aligned even in the presence of (occasional) long names
173 * NOTES: a first shot at updating the documentation.
177 * core.c (core_create_function_syms): fixed computation of min_vma
180 * *.c: removed rcsid.
184 * Lots of changes from David Mosberger-Tang:
188 * gprof.c (main): put parentheses around & within &&.
190 * basic_blocks.c (bb_read_rec): print warning message (once) when
191 ignoring basic-block execution counts.
193 * source.c (source_file_lookup_name): corrected second argument to
196 * hist.c (print_header): merged Fri Oct 21 18:58:02 1994 change by
199 * gmon_io.c (gmon_out_read): the output stule STYLE_GMON_INFO is now
200 supported both for old and new (versioned) gmon.out files. Old
201 files are identified as version 0.
203 * gmon.h (struct raw_arc): count field is now sizeof(long) bytes
204 long (instead of 4) because that is what OSF/1 v3.0 uses.
206 * core.c: minor fixes and debugging info changes.
210 * core.c (core_init): if .text cannot be found, try $CODE$ (the
211 name of the text-section under HP-UX).
213 * hist.c (hist_assign_samples): fixed off-by-one bug: highpc
214 points one past the last sampling bin, so hist_scale should be
215 computed as "hist_scale /= hist_num_bins", not "hist_scale /=
218 * gmon_io.c, hist.c, hist.h: renamed hist_num_samples to
221 * configure.in: added alpha-*-*) for per-target config.
223 * alpha.c, alpha.h: created.
225 * gprof.c (default_excluded_list): <locore>, <hicore> added.
227 * core.c (core_create_function_syms, core_create_line_syms):
228 explicitly keep two sentinels "<locore>" and "<hicore>" that catch
229 all addresses outside the text-space. Thus, sym_lookup(&symtab,
230 addr) continues to guarantee not to return 0 on any address. It
231 also avoids incorrectly crediting the first/last symbol in the
234 * core.c (core_create_line_syms): always create function symbols
235 first, then merge in line symbols; this is so that if parts of the
236 program were compiled without -g, function-level symbols are
239 * utils.c (print_name_only): support for print_path added.
241 * symtab.c (cmp_addr): also use is_func flag in comparison.
242 (symtab_finalize): return immediately when table empty; now
243 more careful about getting rid of the right duplicate symbol.
245 * sparc.c (find_call): many fixes---this function was rather
246 botched in binutils-2.4 already; it should work again.
248 * source.c (source_file_lookup_path): PATH is now strdup'ed (it is
249 not good to rely on get_src_info() to return distinct string
252 * search_list.c (search_list_append): added cast for xmalloc().
254 * hist.c: added explicit initialization to some of the global
255 variables; fixed SItab (scales were off by a factor of 10).
257 * hist.h: include of bfd.h added.
259 * gprof.c, gprof.h (print_path): added.
261 * gprof.h (MAX): fixed.
263 * gmon_out.h: renamed gmon_time_hist_hdr to gmon_hist_hdr.
265 * gmon_io.c: added some casts to (long) so we can always print as %lx
267 * core.c (core_get_text_space): fixed to make it work.
269 * cg_print.c (cg_print_index): added support for print_path option.
271 * cg_dfn.h (cg_dfn): wrap prototype in PARAMS().
273 * call_graph.c, gmon_io.c, hist.c: avoid taking address of array
274 as some compilers complain (e.g., DEC's OSF/1 compiler)
276 * basic_blocks.c, gmon_io.c, hist.c, source.c, sym_ids.c,
277 symtab.c: calls to memset() had 2nd and 3rd args reversed.
281 * gprof.c: added "_mcount" to default_excluded_list.
282 (main): if output_style==0 and there is either a histogram or a
283 call-graph, always generate flat and call-graph, no matter what
284 line_granularity is set to.
286 * source.c (source_file_lookup_name): if searching for sf->name
287 fails, try again with filename obtained after stripping off any
288 partial path from sf->name.
290 * gprof.h (SRCDEBUG): added.
292 * search_list.c (search_list_append): directories were added in wrong
295 * reimplemented selection mechanism from ground up; it is now possible
296 to accurately control what gets included/excluded in each of the
297 output styles; a "symbol-specification" (spec) is the basic means
298 to select a set of symbols; a spec has the syntax:
300 spec == (FILENAME:(FUNCNAME|LINE_NUM) | NAME).
303 any of the terminal symbols can be empty, in which case they
304 match anything (wildcards). NAME is interpreted as a FILENAME
305 if it contains a dot (e.g., foo.c), as LINE_NUM if it starts
306 with a digit, and as FUNCNAME otherwise.
308 For example, to get a call-graph display that ignores arcs
309 from foo() to bar(), you'd say "--no-graph=foo/bar"; to
310 show only arcs into bar() (no matter what the caller),
311 you'd say "--graph=/bar"; and to get a call-graph without
312 any arc info, you'd say "--graph=/"; similarly, to
313 get a flat profile without mcount, you'd say "--no-flat=mcount"
314 and to get a flat profile that shows includes all functions
315 you'd say "--flat=""" (i.e., an empty spec)
317 * hist.c (hist_print): top_time wasn't initialized to 0.0.
321 * gmon_out.h: all headers now declared in terms of characters
322 to avoid getting into trouble with different compilers introducing
323 different amount of padding; the code already accessed the fields
324 through bfd functions, so that didn't have to change.
326 * hist.c (hist_read_rec, hist_write_rec): added support for
327 collection pc histograms measuring quantities other than time;
328 the histogram header now includes a field that specifies the
329 dimension of the quantity measured by the histogram bins
330 (normally, this is "seconds", but other meaningful dimensions
331 include such things as "I-cache misses", "instruction issue stalls"
332 etc.); there is also a field to specify a one-character
333 abbreviation for the dimension; in the case of time, this would
334 be 's'; in most other cases it probably would be '1' (not a physical
339 * gprof.c, gmon_io.[ch]: BSD_COMPATIBLE is gone and new_file_version
340 has become old_file_version; gmon_io.c now always supports old-style
341 gmon.out files; it first tries to read gmon.out as a new version
342 file, if that fails, it tries to read it in the old format;
343 although not very likely, it is possible for gprof to mistake an
344 old-style file as a new one (the first 4 bytes would have to
345 be "gmon"---including the trailing '\0'); in that case, it is
346 necessary to specify --old-file-version
348 * gprof.h: removed dependency on SYSV; the code now always uses
349 strrchr(), memset(), and memcpy() and does not include either
350 of string.h or strings.h; this should make gprof compile on
351 any (Unix) system without configuration (per suggestion of
354 * gprof.c (usage): fixed location of --new-file-format option.
356 * cg_arcs.c (propagate_flags): fixed typo in declaration.
358 * flat_bl.m: removed formfeed at end of file; the form-feed
359 is now printed cg_print.c only when necessary.
361 * major rewrite of gprof---too many changes to mention all of
364 + -l now requests profiling at the line level (as opposed
365 to function level); in this mode, gprof creates a "symbol"
366 (aka name-list entry) for each line of source code, instead
369 + support for a new gmon.out file format; the new format
370 consists of a header with a magic and a version number,
371 followed by a sequence of profile data; profile data
372 can any of: (a) PC histogram, (b) call-graph arcs, or
373 (c) basic-block execution counts; the version number makes
374 it possible to extend gmon.out in a backwards compatible
377 + support for tcov style annotated output: if the gmon.out file
378 contains basic-block execution counts, the user can request
379 the generation of annotated source files, much like Sun's
384 + new scheme to suppress symbols that aren't function names
385 (e.g., avoids mistaking a goto label as a function)
387 + reorganized source code to make it more managable; as a
388 side effect, gprof now compiles cleanly with "gcc -Wall"
392 * gprof.c (funcsymbol): bfd_find_nearest_line() is now used as a
393 final cross-check to determine whether a static symbol should be
394 considered as a function-name.
398 * gmon_io.c (gmon_out_read): recognize "-" as the filename for
399 stdin; this is useful if you wanna keep gmon.out files compressed;
400 this way you can "gzcat" the compressed file into gprof.
402 * gprof.c: flag_min_count now initialized with 1 instead of 0.
404 * basic_blocks.c (bb_annotate_source): added support for creating
405 .tcov files when option flag_annotate_make_files is TRUE.
406 (annotate_with_count): all counts less than the minimum count
407 specified by -m are now annotated with hash-marks.
409 * gprof.c (main): -A is now followed by a string of option chars.
411 * basic_blocks.c (annotate_with_count): replaced b->count with
414 * source.c: flag_annotate_source replaced by source_lock_map.
416 * source.h: source_lock_map added.
418 * gprof.c (main): new command-line syntax: -S simply specifies
419 which source-files user is interested in; -A requests annotated
420 source files and -AA requests that all lines in a source file
425 * basic_blocks.c (PATH_MAX): if undefined, define as 1024.
427 * sparc.c, i386.c, tahoe.c, vax.c: added include of "time_hist.h"
428 so s_lowpc etc. get declared.
430 * arcs.h (doarcs): created.
432 * arcs.c: reordered static functions such that they get defined
435 * gprof.c (main): added options:
436 -A: request annotation of all source lines (with -S)
437 -m: minimum execution count (with default basic-block display)
438 -N: force new file format (only if BSD_COMPATIBLE is defined)
439 -S: annotate source file
440 -t: set table length (with -S)
442 * Makefile (OBJS): added basic_blocks.o call_graph.o gmon_io.o
447 * gprof.c (asgnsamples): computation of "pcl" and "pch" depended
448 on the fact being able to store a long in a double without loss of
449 precision; this does not hold on machines with 64 bit longs and 64
454 * printgprof.c (flatprofheader): Always set totime to 1.0 if not
455 greater than 0.0. Suggested by Harold Assink
460 * printgprof.c (printprof): Use free, not cfree.
461 (printgprof, printindex): Ditto.
465 * gprof.h (kfromlist, ktolist, flist, Flist, elist, Elist): Make
466 decls extern to keep native HP compiler quiet.
470 * gprof.c (funcsymbol): Ignore ___gnu_compiled as well as
471 __gnu_compiled, for the benefit of systems which add a leading
476 * configure.in: Change i386-*-* to i[345]86-*-*.
480 * ns532.c, ns532.h: New Files. ns532 support.
482 * config/mt-ns532: New File. ns532 support.
484 * gprof.c: user register int i instead of defaulting the int.
485 Allows compilation with -Dregister= for debugging.
487 * configure.in: Add ns532 support.
491 * Makefile.in (gprof): Depend on $(LIBS).
495 From binutils-2.4 release:
499 * configure.bat: [new] build makefile from makefile.in (dos)
500 * hertz.c: allow static HERTZ (msdos needs it)
501 * gprof.c: allow target to select "r" or "rb" for fopen
502 * gprof.c: ignore __gnu_compiled symbols
503 * i386.h: dfine FOPEN_RB to "rb" for dos.
507 * Makefile.in (.m.c:): Added .SUFFIXES : .m
508 so flat_bl.c would make from flat_bl.m file.
512 * Makefile.in (install-info): Check for gprof.info in build dir,
513 fall back to srcdir. Depend on it.
515 * gprof.h (TRUE, FALSE): Always use undef before defining them.
519 * Makefile.in (MY_MACHINE): Renamed from MACHINE to avoid losing
520 makes (osf1) in which the value of MACHINE can not be changed.
521 * config/*.mt: Changed appropriately.
525 * gprof.c (getsymtab): Change nosyms to long. Rename
526 get_symtab_upper_bound to bfd_get_symtab_upper_bound. Check for
527 errors from bfd_get_symtab_upper_bound and
528 bfd_canonicalize_symtab.
532 * gprof.c (funcsymbol): Use bfd_get_symbol_info instead of
537 * Makefile.in: Avoid bug in hpux sed.
541 * gprof.texi (Invoking): add text about -v flag
543 * gprof.1: add text about -v flag
547 * gprof.c (VERSION): defined a version macro, print the value
548 when the -v option is used
552 * Makefile.in: Install correctly.
556 * gprof.c (main): Get whoami from argv, instead of hardcoding.
557 Use it in usage message. Split usage message to fit in 80 cols.
561 * Makefile.in: Undo 15 June change.
565 * gmon.h, gprof.h: structs of chars used to hold external
567 * gprof.c (getpfile, openpfile, readsamples): Swap data in using
572 * Makefile.in (.c.o): Look in ../include, not ../bfd, for bfd.h.
574 Mon Jun 14 16:22:59 1993 david d `zoo' zuhn (zoo at rtl.cygnus.com)
576 * Makefile.in: remove parentdir support
580 * Makefile.in (INCLUDES): Add -I../bfd for sysdep.h and bfd.h.
581 * configure.in: No longer need to configure to get sysdep.h.
583 Tue May 18 21:44:11 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
585 * Makefile.in (install): should not depend on install-info
589 * gprof.h: Include ansidecl.h before sysdep.h. Undefine hz.
593 * M Makefile.in: Add -g to CFLAGS.
594 Ads LDFLAGS and use in place of CFLAGS where appropriate.
595 * configure.in: Make a sysdep.hlink in the same way other
596 bfd-based directories do.
597 * gprof.h (UNIT): Replace non-standard 'u_short' by 'unsigned
599 * gprof.h: #include sysdep.h instead of a bunch of stuff.
600 * gprof.c (main): Fix typo gproff->gprof.
602 Thu Mar 25 19:00:37 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
604 * gprof.texi: add INFO-DIR-ENTRY
606 Tue Mar 23 00:03:11 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
608 * Makefile.in: add installcheck target
612 * gprof.c (funcsymbol): Invert test for aflag.
616 * printgprof (xmalloc, xrealloc): Cast results of malloc
621 * Makefile.in: created info, install-info, dvi
623 Wed Jan 6 00:58:09 1993 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
625 * Makefile.in: fix install rule for $(PROG)
629 * gprof.1: updated SYNOPSIS to match actual behavior.
633 * gen-c-prog.awk: New awk script, lightly changed from
634 previously deleted make-c-prog.awk. Converts a text file
635 to a c function that prints that text.
636 * flat_bl.m, fsf_callg_bl.m, bsd_callg_bl.m: New files.
637 Inputs to gen-c-prog.awk, containing text describing
639 * blurbs.c: Removed. Use *_bl.c instead.
640 * Makefile.in: Use gen-cprog.awk to generate *_bl.c files
641 from *_bl.m files. Also, improve *clean rules.
642 * printgprof.c (printgprof): Usw new function names from *_bl.c.
647 * gprof.h, gprof.c, printfgprof.c: Add support for two
648 output styles: The default is similar to the old FSF gprof,
649 while -T sets the variable bsd_style_output, which causes
650 output matching Berkeley's gprof. The biggest differences
651 are that with the FSF style output, the flat profile comes
652 before the call graph; numbers come before explanations;
653 and there is less gratuitous white space.
654 * gprof.h, gprof.c, printfgprof.c: New discard_underscores
655 variable causes discarding of initial underscores when
656 printing symbol names. It is set unless there is a "main"
657 symbol (without an underscore).
658 * printfgprof.c: New function printnameonly(), called
659 by printname(). It handles stripping of initial '_',
660 as well as C++ name-demangling.
661 * gprof.callg, gprof.flat, make-c-prog.awk: Removed.
662 It is just as convenient to edit blurbs.c directly.
663 * Makefile.in: Removed rule for making blurbs.c.
664 * blurbs.c: This is now a true source file (as opposed
665 to being generated from gprof.callg and gprof.flat).
666 Change style to use one long string literal, instead of
667 one literal per output line. Add FSF-style blurb for call graph.
671 * Makefile.in: always create installation directories.
675 * Makefile.in: change ${MACHINE} to $(MACHINE).
677 Sun Jul 19 17:34:01 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
679 * Makefile.in: removed installation of the now useless
680 call.{flag,callg} files.
682 * gprof.1: now uses the standard man macros instead of the new BSD
685 Sun Jul 12 19:06:00 1992 John Gilmore (gnu at cygnus.com)
687 * configure.in: Remove host section, expand target section.
688 * config/mt-{tahoe,vax}: Add, to match existing support files.
689 * config/tmake-*: Remove leftover crud.
691 * blurbs.c: New file, created from gprof.flat and gprof.callg by
692 * make-c-prog.awk: which processes text files into C programs.
693 * printgprof.c (flatprofheader, gprofheader): Call new functions
695 (printblurb): Remove.
696 * Makefile.in: Infrastructure to build blurbs.
697 * pathnames.h: has been removed. Gprof now has no filename
701 Sat Jul 11 18:07:21 1992 david d `zoo' zuhn (zoo at cirdan.cygnus.com)
703 * Makefile.in: define man1dir and install the man page
707 * Makefile.in: added dummy info and install-info targets
709 Thu Jun 4 11:34:02 1992 Mark Eichin (eichin at cygnus.com)
711 * lookup.c: fixed fencepost in nllookup and added dbg_nllookup for
712 help in debugging the problem (with -DDEBUG)
713 * gprof.c: symbol values are now real values, don't add the vma
714 anymore. (done for solaris; should verify this on other platforms)
715 * ChangeLog: created.