1999-09-24  Nick Clifton  <nickc@cygnus.com>

	* gmon_io.c (gmon_out_read): Make sure that sensible values
	are extracted from a raw header.

1999-08-06  Ian Lance Taylor  <ian@zembu.com>

	From Brad Lucier <lucier@math.purdue.edu>:
	* corefile.c (core_create_line_syms): Add cast for printf.

1999-07-21  Ian Lance Taylor  <ian@zembu.com>

	From Mark Elbrecht:
	* configure.bat: Remove; obsolete.

1999-07-15  Ian Lance Taylor  <ian@zembu.com>

	* configure.in: Bump version number to 2.9.5.
	* configure: Rebuild.

1999-07-11  Ian Lance Taylor  <ian@zembu.com>

	* corefile.c (core_create_function_syms): Add ATTRIBUTED_UNUSED.
	* sym-ids.c (non_existent_file): Fully initialize structure.

1999-07-01  Ian Lance Taylor  <ian@zembu.com>

	* Many files: Add casts in many print statements to cast bfd_vma
	values to unsigned long when calling printf.
	* Makefile.am ($(OBJECTS)): Add gmon.h.
	* Makefile.in: Rebuild.

Mon Jun 14 10:35:28 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* gprof.texi: Fix typo.

1999-06-13  Ian Lance Taylor  <ian@zembu.com>

	From Bob Byrnes <byrnes@curl.com>:
	* cg_dfn.c: Include "libiberty.h"
	(DFN_INCR_DEPTH): Define instead of DFN_DEPTH.
	(dfn_stack): Define as pointer rather than array.
	(pre_visit): Reallocate dfn_stack as needed.

1999-04-26  Tom Tromey  <tromey@cygnus.com>

	* aclocal.m4, configure: Updated for new version of libtool.

1999-04-06  Ian Lance Taylor  <ian@zembu.com>

	* gprof.h (LC_MESSAGES): Never define.
	* gprof.c (main): Don't pass LC_MESSAGES to setlocale if the
	system does not define it.

1999-04-05  H.J. Lu  <hjl@gnu.org>

	* corefile.c (core_create_line_syms): Don't use fixed size array
	for prev_name and prev_filename.

1999-04-04  Michael Hohmuth  <hohmuth@innocent.com>

	* gprof.h (FF_BSD44): Define.
	* gmon.h (struct raw_phdr): Add version, profrate, and spare
	fields unconditionally.
	(struct old_raw_phdr): New struct.
	* gprof.c (main): Handle -O 4.4bsd.
	* gmon_io.c (gmon_out_read): Handle BSD 4.4 format, either
	automatically or by user specification.
	(gmon_out_write): Handle BSD 4.4 format.
	* configure.in: Don't set BSD44_FORMAT.
	* gprof.texi (Miscellaneous Options): Document -O 4.4bsd.
	* configure, gconfig.in: Rebuild.

Tue Feb 16 17:01:33 1999  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change AC_PREREQ to 2.13.  Change AM_PROG_INSTALL
	to AC_PROG_INSTALL.  Remove AM_CYGWIN32.  Change AM_EXEEXT to
	AC_EXEEXT.  Add comment to AC_DEFINE.
	* acconfig.h: Remove.
	* aclocal.m4: Rebuild.
	* configure: Rebuild.
	* Makefile.in: Rebuild.
	* gconfig.in: Rebuild.

Sun Dec  6 21:57:50 1998  Ian Lance Taylor  <ian@cygnus.com>

	* gprof.texi (Symspecs): Mention that you have to add any
	underscore yourself when naming a symbol.

Mon Nov  2 15:05:33 1998  Geoffrey Noer  <noer@cygnus.com>

        * configure.in: detect cygwin* instead of cygwin32*
        * configure: regenerate

Wed Aug 12 14:59:06 1998  Ian Lance Taylor  <ian@cygnus.com>

	Avoid some overflow cases:
	* basic_blocks.h (bb_min_calls): Change to unsigned long.
	* call_graph.h (cg_tally): Change count parameter to unsigned
	long.
	* cg_arcs.h (Arc): Change count field to unsigned long.
	(arc_add): Change count parameter to unsigned long.
	* source.h (Source_File): Change ncalls field to unsigned long.
	* symtab.h (Sym): Change fields ncalls, bb_calls, and
	cg.self_calls to unsigned long.
	* Many files: Update accordingly.

	* configure, Makefile.in, aclocal.m4: Rebuild with current tools.

Fri Jul 10 17:29:49 1998  Stan Cox  <scox@equinox.cygnus.com>

	* configure.in (BSD44_FORMAT): Define for cygwin32, win32, mingw32
	* configure: Rebuild.

Fri Jun 12 13:40:05 1998  Tom Tromey  <tromey@cygnus.com>

	* po/Make-in (all-yes): If maintainer mode, depend on .pot file.
	($(PACKAGE).pot): Unconditionally depend on POTFILES.

Sun May 10 22:35:33 1998  Jeffrey A Law  (law@cygnus.com)

	* po/Make-in (install-info): New target.

Tue May  5 18:28:40 1998  Tom Tromey  <tromey@cygnus.com>

	* gprof.h (_): Undefine BFD's version.

Tue Apr 28 19:17:33 1998  Tom Tromey  <tromey@cygnus.com>

	* gprof.c (main): Conditionally call setlocale.
	* gprof.h: Include <locale.h> if HAVE_LOCALE_H.
	(LC_MESSAGES): Now can be defined even when ENABLE_NLS.

Tue Apr 28 19:50:09 1998  Ian Lance Taylor  <ian@cygnus.com>

	* corefile.c: Rename from core.c.
	* corefile.h: Rename from core.h.
	* Many .c files: Include corefile.h rather than core.h.
	* Makefile.am (sources): Change core.c to corefile.c.
	(noinst_HEADERS): Change core.h to corefile.h.
	($(OBJECTS)): Depend upon corefile.h rather than core.h.
	(corefile.o): Rename target from core.o, depend upon corefile.c.
	* Makefile.in, po/POTFILES.in: Rebuild.

Mon Apr 27 16:50:40 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change version number to 2.9.4
	* configure: Rebuild.

Wed Apr 22 16:01:17 1998  Tom Tromey  <tromey@cygnus.com>

	* po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).

Wed Apr 22 00:00:22 1998  Tom Tromey  <tromey@scribbles.cygnus.com>

	* gprof.h: Added includes and defines for gettext.
	* configure.in (ALL_LINGUAS): New macro.
	Call CY_GNU_GETTEXT.  Create po/Makefile.in and po/Makefile.
	* acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY,
	HAVE_LC_MESSAGES): Define.
	* gprof.c (main): Call setlocale, bindtextdomain, textdomain.
	* Makefile.am (SUBDIRS): New macro.
	(INCLUDES): Look in intl dirs for headers.  Define LOCALEDIR.
	(gprof_DEPENDENCIES): Added INTLDEPS.
	(gprof_LDADD): Added INTLLLIBS.
	(POTFILES): New macro.
	(po/POTFILES.in): New target.
	* Many files: Wrap user-visible strings with gettext invocation.

Tue Apr  7 12:43:37 1998  Ian Lance Taylor  <ian@cygnus.com>

	From hjl@lucon.org <H.J. Lu>:
	* Makefile.am (diststuff): New target.
	* Makefile.in: Rebuild.

Mon Mar 30 12:47:48 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Set version to 2.9.1.
	* configure: Rebuild.

	* Branched binutils 2.9.

Sat Mar 28 23:09:08 1998  Ian Lance Taylor  <ian@cygnus.com>

	Fix some gcc -Wall warnings:
	* cg_arcs.c (num_cycles): Change to unsigned int.
	(numarcs): Likewise.
	(arc_add): Change maxarcs to unsigned int.
	(cg_assemble): Change index to unsigned int.
	* cg_arcs.h (num_cycles, numarcs): Update declarations.
	* cg_print.c (cg_print): Change index to unsigned int.
	(cg_print_index): Change index, nnames, todo, i, and j to unsigned
	int.
	(cg_print_file_ordering): Change symbol_count and index2 to
	unsigned int.
	* core.c (symbol_map_count): Change to unsigned int.
	(core_create_function_syms): Change j to unsigned int.
	(core_create_line_syms): Add cast to avoid warning.
	* hist.c (hist_assign_samples): Change j to unsigned int.
	(hist_print): Change index to unsigned i nt.  Add cast to avoid
	warning.
	* sym_ids.c (parse_spec): Add casts to avoid warning.
	* symtab.c (symtab_finalize): Change j to unsigned int.
	(sym_lookup): Update printf format strings.
	* symtab.h (Sym_Table): Change len to unsigned int.
	* tahoe.c (tahoe_reladdr): Add casts to avoid warnings.

Tue Mar 24 19:00:11 1998  Ian Lance Taylor  <ian@cygnus.com>

	Add --demangle and --no-demangle options:
	* gprof.h (demangle): Declare.
	* gprof.c (demangle): New global variable.
	(OPTION_DEMANGLE, OPTION_NO_DEMANGLE): Define.
	(long_options): Add "demangle" and "no-demangle".
	(usage): Mention --demangle and --no-demangle.
	(main): Handle OPTION_DEMANGLE and OPTION_NO_DEMANGLE.
	* utils.c (print_name_only): Only demangle symbol name if demangle
	is true.
	* gprof.texi (Output Options): Document new options.

Fri Mar 20 19:21:56 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in: Rebuild with automake 1.2e.
	* aclocal.m4, configure: Rebuild with libtool 1.2.

Thu Feb 12 14:36:05 1998  Ian Lance Taylor  <ian@cygnus.com>

	* gprof.c (usage): Update bug-gnu-utils address.

Sat Feb  7 15:43:12 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure, aclocal.m4: Rebuild with new libtool.

Fri Feb  6 12:02:28 1998  Ian Lance Taylor  <ian@cygnus.com>

	* alpha.c (alpha_Instruction): Use int, not signed.

Fri Feb  6 02:00:19 1998  Jeffrey A Law  (law@cygnus.com)

	* core.c (core_init): Adding missing "break".

Thu Feb  5 12:49:37 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure, Makefile.in, aclocal.m4: Rebuild with new libtool.

Tue Feb  3 14:25:25 1998  Brent Baccala  <baccala@freesoft.org>

	* bbconv.pl: New file.
	* Makefile.am (EXTRA_DIST): Add bbconv.pl.
	* Makefile.in: Rebuild.

	* gprof.texi: Extensive additions to document all arguments and
	output formats.

	* symtab.c (symtab_finalize): Prefer function symbols over line
	symbols.
	(dbg_sym_lookup): Correct debugging messages.

	* gprof.c (main): --sum implies --line.

	* cg_print.c (cg_print): When doing line by line profiling, don't
	use a non-function as a main listing item.

	* call_graph.c (cg_tally): When using line by line profiling, use
 	the function symbol as the child.

	* symtab.h (NBBS): Define.
	(Sym): Add bb_addr and bb_calls fields.
	* basic_blocks.c (bb_read_rec): Save multiple basic blocks per
	symbol.
	(bb_write_blocks): Adjust for multiple basic blocks per symbol.
	(print_exec_counts): Don't check whether a symbol is the start of
	a basic block.  Print all basic blocks for a symbol.
	(annotate_with_count): Rewrite to print all basic block counts and
	to pay attention to width argument.
	(print_annotated_source): Don't check whether symbol is the start
	of a basic block.

	Make it possible to build a cross gprof, although a few cases are
	still not handled:
	* configure.in: Don't set MY_TARGET.
	* gprof.h: Don't include MACHINE_H.  Don't define FOPEN_RB or
	FOPEN_WB; just get them from sysdep.h.
	* core.h (min_insn_size, offset_to_code): Declare.
	* core.c (MIN_INSN_SIZE): Don't define.
	(min_insn_size, offset_to_code): New variables.
	(core_init): Initialize min_insn_size and offset_to_code.
	(find_call): New function.
	(core_create_line_syms): Don't use min_dist.  Set is_static in
	pass 2.
	* hist.c (UNITS_TO_CODE): Define.
	* gprof.c (default_excluded_list): Add "__mcount_internal".
	* gmon.h: Change TARGET_alpha to __alpha__.
	* hertz.h: Ifdef MACH, define hertz as HZ.
	* alpha.c (alpha_Instruction): Rename from Instruction.  Change
	all references.
	(alpha_find_call): Rename from find_call.
	* alpha.h: Remove.
	* dummy.c, dummy.h: Remove.
	* i386.c (i386_iscall): Rename from iscall.  Change all
	references.  Check for call instruction, not jump or lcall.
	(i386_find_call): Rename from find_call.  Correct for VMA.
	Correct call destination computation.  Don't dereference symbol if
	it is NULL.
	* i386.h: Remove.
	* ns532.c, ns532.h: Remove.
	* sparc.c (CALL): Define.
	(sparc_find_call): Rename from find_call.
	* sparc.h: Remove.
	* tahoe.c: Include cg_arcs.h, core.h, hist.h, and symtab.h.  Don't
	include time_host.h.
	(CALLF, PC): Define.
	(enum tahoe_opermodes, tahoe_operandenum): Define.  Rename all
	references to opermodes or operandenum to these.
	(tahoe_operandmode): Rename from operandmode.  Call abort if
	switch does not return.
	(tahoe_operandname): Rename from operandname.  Call abort if
	switch does not return.
	(tahoe_operandlength): Rename from operandlength.  Call abort if
	switch does not return.
	(tahoe_reladdr): Rename from reladdr.
	(tahoe_find_call): Rename from find_call.  Use core_text_space
	rather than textspace.
	* tahoe.h: Remove.
	* vax.c (CALLS, PC): Define.
	(enum opermodes, operandenum, struct modebyte): Define.
	(vax_operandmode): Rename from operandmode.  Call abort if switch
	does not return.
	(vax_operandname): Rename from operandname.  Call abort if switch
	does not return.
	(vax_operandlength): Rename from operandlength.  Call abort if
	switch does not return.
	(vax_reladdr): Rename from reladdr.
	(vax_find_call): Rename from find_call.
	* vax.h: Remove.
	* Makefile.am (AUTOMAKE_OPTIONS): Set to cygnus.
	(MY_TARGET): Remove.
	(INCLUDES): Remove -DTARGET_$(MY_TARGET) and -DMACHINE_H=
	\"$(MY_TARGET).h\".
	(gprof_SOURCES): Add i386.c, alpha.c, vax.c, tahoe.c, sparc.c.
	(gprof_DEPENDENCIES): Remove $(MY_TARGET).o.
	(gprof_LDADD): Likewise.
	(noinst_HEADERS): Remove alpha.h, i386.h, ns532.h, sparc.h,
	tahoe.h, vax.h, dummy.h.
	(EXTRA_DIST): Remove alpha.c, i386.c, ns532.c, sparc.c, tahoe.c,
	vax.c, dummy.c.
	($(OBJECTS)): Don't depend upon $(MY_TARGET).h.
	($(MY_TARGET).o): Remove target.
	(i386.o, alpha.o, vax.o, tahoe.o, sparc.o): New targets.
	* configure, Makefile.in, aclocal.m4: Rebuild.

Mon Dec 29 14:17:08 1997  Ian Lance Taylor  <ian@cygnus.com>

	* core.c (core_sym_class): Treat weak symbols as text symbols.
	From Dean Gaudet <dgaudet@arctic.org>.

Wed Sep 24 11:35:43 1997  Ian Lance Taylor  <ian@cygnus.com>

	* aclocal.m4: Rebuild with new libtool.
	* Makefile.in: Rebuild with current automake.
	* configure: Rebuild.

Sat Aug  9 16:25:01 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change version number to 2.8.2.  Call
	AM_PROG_LIBTOOL.  Remove shared library handling; now handled by
	libtool.  Add AM_CONFIG_HEADER.  Change AC_PROG_INSTALL to
	AM_PROG_INSTALL.  Add AM_EXEEXT.
	* Makefile.am (LINK): Remove.
	(gprof_LDFLAGS): Remove
	(gprof_DEPENDENCIES): Change libbfd.a to libbfd.la.
	(gprof_LDADD): Likewise.
	($(OBJECTS)): Depend upon gconfig.h and ../bfd/config.h.
	* gprof.h: Undefine PACKAGE and VERSION after including BFD
	sysdep.h file, then include new gconfig.h file.
	* gprof.c (VERSION): Don't define.
	* acconfig.h: New file.
	* stamp-h.in: New file.
	* gconfig.in: New file, created by autoheader.
	* Makefile.in, configure, aclocal.m4: Rebuild.

Sat Jun 28 23:20:42 1997  Ian Lance Taylor  <ian@cygnus.com>

	* aclocal.m4, configure, Makefile.in: Rebuild with automake 1.2.

Mon Jun 16 15:31:39 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (INCLUDES): Add -DDEBUG.
	* Makefile.in: Rebuild.

Tue Apr 15 14:19:30 1997  Ian Lance Taylor  <ian@cygnus.com>

	Change to use automake:
	* Makefile.am: New file.
	* configure.in: Run AM_INIT_AUTOMAKE, AM_MAINTAINER_MODE, and
	AM_CYGWIN32.
	* aclocal.m4: New file, created by aclocal.
	* Makefile.in: Replace with file created by automake --cygnus.
	* configure: Rebuild.

Thu Apr  3 13:21:25 1997  Ian Lance Taylor  <ian@cygnus.com>

	* gprof.c (VERSION): Define as "2.8.1".

	* Branched binutils 2.8.

Thu Mar 27 17:15:23 1997  Ian Lance Taylor  <ian@cygnus.com>

	* gprof.c (main): Correct copyright message.

Mon Mar 24 11:12:26 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (.c.o): Define TARGET_$(MY_TARGET) when compiling.
  	* gmon.h: Use bytes counts rather than sizeof in struct raw_phdr
 	and struct raw_arc.

Mon Mar 17 10:54:47 1997  David Mosberger-Tang  <davidm@azstarnet.com>

	* cg_arcs.c (arc_add): memset() newly alloced arc to ensure
	all fields are initialized with 0.

Sat Mar 15 19:17:31 1997  H.J. Lu  <hjl@lucon.org>

	* symtab.h (find_call): Declare.
	* cg_arcs.c (cg_assemble): Don't declare find_call.
	* hist.c (scale_and_align_entries): Declare.

Thu Feb 27 12:46:53 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Define BSD44_FORMAT if the target looks like a
	BSD4.4 derived system.
	* configure: Rebuild.
	* Makefile.in (.c.o): Add @DEFS@.
	* gmon_io.c (gmon_out_read): In BSD44_FORMAT code, get profrate
	from profrate field, not version field.

Thu Jan 16 17:42:54 1997  Ian Lance Taylor  <ian@cygnus.com>

	* dummy.c (find_call): Clear ignore_direct_calls.

Tue Dec 31 15:44:10 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (.c.o): Add -D_GNU_SOURCE.  Put $(CFLAGS) at the
	end.
	(gprof): Put $(CFLAGS) after the other options.

Tue Nov 26 17:08:38 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Rebuild with autoconf 2.12.

Wed Oct  2 15:23:16 1996  Ian Lance Taylor  <ian@cygnus.com>

	* sparc.c (find_call): Align p_lowpc to avoid bus error.

Tue Oct  1 15:58:10 1996  Ian Lance Taylor  <ian@cygnus.com>

	* gprof.c (usage): Print bug report address.
	(main): Change version printing to match current GNU standards.

Fri Aug 30 12:16:11 1996  Ian Lance Taylor  <ian@cygnus.com>

	* gmon.h: Replace #elif with #else/#endif.

Thu Aug 29 17:04:10 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (i[345]86-*-*): Recognize i686 for pentium pro.
	* configure: Regenerate.

Thu Aug 22 17:12:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Set and substitute HLDENV.
	* configure: Rebuild.
	* Makefile.in (HLDENV): New variable.
	(gprof): Use $(HLDENV).

Wed Aug  7 14:43:51 1996  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* core.c (read_function_mappings): Cast xmalloc return.

Thu Jul  4 12:01:42 1996  Ian Lance Taylor  <ian@cygnus.com>

	* gprof.c (VERSION): Define as "2.7.1".

	* Released binutils 2.7.

	* bb_exit_func.c: Rename from __bb_exit_func.c, so that it can be
	stored on a System V file system.

Thu Jun 27 11:36:22 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Call AC_ISC_POSIX.
	* configure: Rebuild.
	* Makefile.in (gprof): Pass $(CFLAGS) during link.
	* hertz.c: Don't include <sys/time.h>; let sysdep.h handle that.
	If HAVE_SETITIMER is not defined, try using sysconf.

Mon Jun 24 18:27:28 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (exec_prefix, bindir, libdir, mandir, infodir, datadir,
	INSTALL_PROGRAM, INSTALL_DATA): Use autoconf-set values.
	* configure.in (AC_PREREQ): autoconf 2.5 or higher.
	(AC_PROG_INSTALL): added.
	* configure: Rebuilt.

Mon Jun 24 12:03:09 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: On alpha*-*-osf*, link against libbfd.a if not
	using shared libraries.
	* configure: Rebuild with autoconf 2.10.

Tue Jun 18 17:35:58 1996  Ian Lance Taylor  <ian@cygnus.com>

	* core.c (core_create_line_syms): Use xstrdup rather than strdup.
	* source.c (source_file_lookup_path): Likewise.

Mon Apr  8 14:44:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Permit --enable-shared to specify a list of
	directories.
	* configure: Rebuild.

Thu Mar 21 17:18:25 1996  Ian Lance Taylor  <ian@cygnus.com>

	* core.c (core_create_function_syms): Move filename and func_name
	inside ifdef where they are used.

	* core.c (core_sym_class): Parenthesize && within ||.
	* symtab.c (symtab_finalize): Correct parenthesization.

	* cg_print.h (cg_print_file_ordering): Declare.
	(cg_print_function_ordering): Declare.

	* __bb_exit_func.c (__bb_exit_func): Replace bcopy with memcpy.
	* cg_arcs.c (arc_add): Likewise.
	* cg_print.c (cg_print_function_ordering): Likewise.

Thu Mar 21 17:02:02 1996  David Mosberger-Tang  <davidm@azstarnet.com>

	* gprof.c (default_excluded_list): Add "__mcount".

	* gprof.c (main): Change ifdef __osf__ to __alpha__.

	* gmon_io.c (gmon_out_read): If BSD44_FORMAT is defined, get the
	profiling rate from the header.

	* gmon.h (struct raw_phdr): Only include pad if both __alpha__ and
	__osf__ are defined.  Add new fields if BSD44_FORMAT is defined.

	* alpha.h (MIN_INSN_SIZE): Define.
	* core.c (MIN_INSN_SIZE): If not defined, define as 1.
	(core_sym_class): Ignore debugging symbols.
	(core_create_line_syms): Use MIN_INSN_SIZE when gathering line
	information.

Wed Mar 20 18:15:47 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* cg_print.c (cg_print_function_ordering): Fix __GNUC__ misspelled
	as __GNU_C__.
	(order_and_dump_functions_by_arcs): Likewise.

Tue Mar 12 12:19:50 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Rebuild with autoconf 2.8.

Sun Feb 18 15:06:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Check for 'do not mix' from native linker before
 	trying to use -rpath.
	* configure: Rebuild.

Tue Feb 13 15:32:53 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Set HDLFLAGS for *-*-hpux with --enable-shared.
	* configure: Rebuild.

Wed Feb  7 14:03:17 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Don't set CC.  Look for --enable-shared.  Set
	BFDLIB and HLDFLAGS and substitute them.
	* configure: Rebuild.
	* Makefile.in (LIBS): Use @BFDLIB@.
	(HLDFLAGS): New variable.
	(gprof): Use $(HLDFLAGS).

Mon Feb  5 16:34:44 1996  Ian Lance Taylor  <ian@cygnus.com>

	Support for building bfd and opcodes as shared libraries, based on
	patches from Alan Modra <alan@spri.levels.unisa.edu.au>:
	* Makefile.in (LIBDEPS): New variable.
	(LIBS): Use -L../bfd -lbfd.
	(gprof): Depend upon $(LIBDEPS) rather than $(LIBS).

Sat Dec 30 10:11:03 1995  Jeffrey A Law  (law@cygnus.com)

	* gprof.c (long_options): Add "--function-ordering" and
	"--file-ordering" options.
	(usage): Add new options to usage message.
	(main): Handle new options.
	* gprof.h (STYLE_FUNCTION_ORDER): Define.
	(STYLE_FILE_ORDER): Define.
	(function_mapping_file): Declare.
	* cg_arcs.c (arcs, numarcs): New globals.
	(arc_add): Put new arcs into the arc array so the function/file
	ordering code can examine them.
	* cg_arcs.h (struct arc): New field "has_been_placed".
	(arcs, numarcs): Declare new globals.
	* core.c (symbol_map, symbol_map_count): New globals.
	(read_function_mappings): New function to read in a function
	to object map file.
	(core_init): Call read_function_mappings if a function mapping
	file exists.
	(core_create_function_syms): Handle function to object file
	mappings.
	* symtab.h (struct sym): New fields "mapped", "has_been_placed",
	"nuses", "prev".
	* cg_print.c (cmp_arc_count): New function for sorting arcs.
	(cmp_fun_nuses): Likewise for functions.
	(cg_print_function_ordering): New function to print a suggested
	function ordering.
	(cg_print_file_ordering): Likewise for ordering .o files.
	(order_and_dump_functions_by_arcs): Helper function for function
	and object file ordering code.

Sun Dec 24 21:32:27 1995  Jeffrey A Law  (law@cygnus.com)

	* core.c (core_sym_class): Ignore symbols without BSF_FUNCTION
	set if ignore_non_function is set.
	* gprof.h (ignore_non_functions): Declare.
	* gprof.c (ignore_non_functions): Define.
	(long_options): Add "ignore-non-functions".
	(usage): Add new options.
	(main): Recognize "-D" and "--ignore-non-functions" option.

Tue Nov 21 13:24:39 1995  Ken Raeburn  <raeburn@cygnus.com>

	* Makefile.in (.m.c): Strip out directory name from function
	name.

	* hist.c (scale_and_align_entries): Don't use DEFUN_VOID.  Do
	UNITS_TO_CODE adjustment unconditionally; compiler can optimize
	away zero-offset case.  Refer to scaled_addr, not aligned_addr.

	* vax.c: Don't include vax.h here.

Thu Nov 16 03:41:37 1995  Ken Raeburn  <raeburn@cygnus.com>

	Version 2.6 released.

Wed Nov  8 11:40:04 1995  Ian Lance Taylor  <ian@cygnus.com>

	* gprof.c (main): Cast getenv return value.

Mon Nov  6 15:05:00 1995  Ken Raeburn  <raeburn@cygnus.com>

	* Makefile.in (TAGS): New target.

Wed Nov  1 12:51:21 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* Makefile.in (DISTSTUFF):  Rename to GEN_FILES, to avoid confusion.
	(all):  Depend on $(GEN_FILES), not diststuff (which also depends
	on info).

Wed Nov  1 15:23:15 1995  Manfred Hollstein KS/EF4A 60/1F/110 #40283  <manfred@lts.sel.alcatel.de>

	* sym_ids.c: Include <ctype.h>.

Wed Oct 25 13:24:31 1995  Per Bothner  <bothner@kalessin.cygnus.com>

	* Makefile.in (diststuff):  Also make info.
	(mostlyclean):  Don't remove gprof.info*.
	(maintainer-clean realclean):  Also remove *.info*.

Fri Oct  6 16:25:32 1995  Ken Raeburn  <raeburn@cygnus.com>

	Mon Sep 25 22:49:32 1995  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* Makefile.in: Add dependecies for $(OBJS) on header files.

	* cg_print.c (print_cycle, print_members, cg_print_index): Fix new
	style output format to make it consistent.
	* dummy.c (find_call): Fix typo in error message.

Wed Sep 20 13:21:02 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (maintainer-clean): New target, synonym for
	realclean.

Fri Sep  8 14:38:08 1995  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (install): Don't install in $(tooldir).

Fri Aug 25 15:30:05 1995  Ken Raeburn  <raeburn@cygnus.com>

	NS32K changes from Ian Dall:
	* configure.in: Use ns32k, not ns532.
	* ns532.c: Include symtab.h.
	(find_call): Renamed from findcall.  Print a message.
	* ns532.h: Remove dummy.h comments.

Tue Aug 22 10:00:45 1995  Jeffrey A. Law  <law@rtl.cygnus.com>

	* Makefile.in (install): Remove "brokensed" hack, unnecessary now
	that we're using autoconf.

Wed Jul 19 18:46:13 1995  Fred Fish  <fnf@cygnus.com>

	* core.c (get_src_info): Cast arg 7 of bfd_find_nearest_line
	to proper type of "unsigned int *".

Fri Jun 16 15:29:36 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* configure.in: Use changequote around use of [].

Mon Jun 12 12:14:52 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* Makefile.in (distclean, realclean): Remove config.cache and
	  config.log.

Wed May 17 17:56:53 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* Makefile.in (Makefile): Added config.status to dependency list.
	  (config.status): New target.
	  (SHELL): New definition.

Tue Apr 25 21:11:12 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Makefile.in (install): Depend on "all".

Thu Apr 20 17:29:07 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Makefile.in: Change all references to MY_MACHINE to MY_TARGET,
	to match configure script.

Wed Apr 19 11:19:37 1995  J.T. Conklin  <jtc@rtl.cygnus.com>

	* gen-c-prog.awk: Changed reference to "make-c-prog.awk" in
	  comment emitted by this script to gen-c-prog.awk.

	* Makefile.in, configure.in: Converted to use autoconf.
	* configure: New file, generated with autoconf 2.3.
	* config/{mt-alpha, mt-dummy, mt-i386, mt-ns532, mt-sparc,
	  mt-tahoe, mt-vax}: Removed.

Mon Mar 13 21:44:24 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* __bb_exit_func.c: New file, from David Mosberger-Tang.

	Thu Feb  9 16:56:07 1995  David Mosberger-Tang  <davidm@piston.cs.arizona.edu>

	* All *.c: More cleanup towards GNU format.

	* gmon_out.h (struct gmon_hist_hdr, struct gmon_cg_arc_record): 
	replaced sizeof (bfd_vma) by size (char*) because Ken tells me
	that bfd_vma is only guaranteed to be at least as big as a pointer.

	(GMON_Record_tag): added explicit enumeration values to ensure
	compatibility across compilers.

	* gmon_io.c (get_vma, put_vma): replaced sizeof(bfd_vma) by
	sizeof(char*).

Tue Feb  7 17:24:12 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* All *.c and *.h files: Ran "indent -gnu".  Cleaned up a couple
	of constructs GNU indent couldn't handle.  Block comments not yet
	rewritten in GNU format.

	* gprof.c (VERSION): Changed to 2.6, to get in sync for next
	binutils release.

Sun Feb  5 16:19:46 1995  David Mosberger-Tang  <davidm@piston.cs.arizona.edu>

	* symtab.c (symtab_finalize): ensure globals symbols really
	are favored over static ones---even if their name looks less
	preferable; this is important for HP-UX; for example, there
	is a static label Ltext_something that aliases the global
	symbol _start

	* hist.c (hist_print): auto-scaling is now in effect for FSF-style
	output only; also, auto-scaling is now performed based on
	per-call, rather than total execution time, which is what it was
	meant to be.

	* gprof.h (File_Format): new type.

	* gprof.c (VERSION): upped to 2.7---seems to be completely out of
	sync with Cygnus version numbers though...

	(long_options): renamed --gmon-info to --file-info, --width added,
	renamed --old-file-format to --file-format
	(main): dito; also added support to read prof files, but as
	mon_out_read() is not implemented, it's #ifdef'd out for now

	(usage): update to reflect new options.

	* gmon_io.c: replaced "old_file_format" by more general
        "file_format" option

	* gmon.h (struct raw_phdr): fixed declaration for OSF/1.

	* core.c (core_sym_class): added back check for __gnu_compiled and
	___gnu_compiled for the benefit of systems without
	bfd_find_nearest_line() support

	(get_src_info): now the libbfd is fixed, invoke bfd_find_nearest_line()
	with section-relative addresses

	(core_create_function_syms): get_src_info() calls are currently
	enabled for OSF/1 only.  It appears to work allright for SunOS
        4.1.x as well, but on SPARCs it gets painfully slow with the
        current implementation of aout_32_find_nearest_line();
        unfortunately, this means that static functions will not have their
	filename printed in the call-graph function index; line-level
	profiling should still work, but requires some patience

	* cg_print.c (cg_print_index): sanitised printing of index when
	using FSF-style output; in particular, output width is now controlled
	via option --width and the function tries hard to keep columns
	aligned even in the presence of (occasional) long names

	* NOTES: a first shot at updating the documentation.

Wed Feb  1 19:07:44 1995  David Mosberger-Tang  <davidm@piston.cs.arizona.edu>

	* core.c (core_create_function_syms): fixed computation of min_vma
	and max_vma.

	* *.c: removed rcsid.

Tue Jan 31 16:18:18 1995  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* Lots of changes from David Mosberger-Tang:

	Tue Oct 25 19:20:14 1994  David Mosberger-Tang	<davidm@piston.cs.arizona.edu>

	* gprof.c (main): put parentheses around & within &&.

	* basic_blocks.c (bb_read_rec): print warning message (once) when
	ignoring basic-block execution counts.

	* source.c (source_file_lookup_name): corrected second argument to
	strcmp().

	* hist.c (print_header): merged Fri Oct 21 18:58:02 1994 change by
	Ken Raeburn <raeburn@cujo.cygnus.com> from binutils-2.5.1.

	* gmon_io.c (gmon_out_read): the output stule STYLE_GMON_INFO is now
	supported both for old and new (versioned) gmon.out files.  Old
	files are identified as version 0.

	* gmon.h (struct raw_arc): count field is now sizeof(long) bytes
	long (instead of 4) because that is what OSF/1 v3.0 uses.

	* core.c: minor fixes and debugging info changes.

	Sun Sep 11 18:47:47 1994  David Mosberger-Tang	(davidm@piston.cs.arizona.edu)

	* core.c (core_init): if .text cannot be found, try $CODE$ (the
	name of the text-section under HP-UX).

	* hist.c (hist_assign_samples): fixed off-by-one bug: highpc
	points one past the last sampling bin, so hist_scale should be
	computed as "hist_scale /= hist_num_bins", not "hist_scale /=
	hist_num_bins - 1".

	* gmon_io.c, hist.c, hist.h: renamed hist_num_samples to
	hist_num_bins.

	* configure.in: added alpha-*-*) for per-target config.

	* alpha.c, alpha.h: created.

	* gprof.c (default_excluded_list): <locore>, <hicore> added.

	* core.c (core_create_function_syms, core_create_line_syms):
	explicitly keep two sentinels "<locore>" and "<hicore>" that catch
	all addresses outside the text-space.  Thus, sym_lookup(&symtab,
	addr) continues to guarantee not to return 0 on any address.  It
	also avoids incorrectly crediting the first/last symbol in the
	text-space.

	* core.c (core_create_line_syms): always create function symbols
	first, then merge in line symbols; this is so that if parts of the
	program were compiled without -g, function-level symbols are
	available still.

	* utils.c (print_name_only): support for print_path added.

	* symtab.c (cmp_addr): also use is_func flag in comparison.
	(symtab_finalize): return immediately when table empty; now
	more careful about getting rid of the right duplicate symbol.

	* sparc.c (find_call): many fixes---this function was rather
	botched in binutils-2.4 already; it should work again.

	* source.c (source_file_lookup_path): PATH is now strdup'ed (it is
	not good to rely on get_src_info() to return distinct string
	pointers).

	* search_list.c (search_list_append): added cast for xmalloc().

	* hist.c: added explicit initialization to some of the global
	variables; fixed SItab (scales were off by a factor of 10).

	* hist.h: include of bfd.h added.

	* gprof.c, gprof.h (print_path): added.

	* gprof.h (MAX): fixed.

	* gmon_out.h: renamed gmon_time_hist_hdr to gmon_hist_hdr.

	* gmon_io.c: added some casts to (long) so we can always print as %lx

	* core.c (core_get_text_space): fixed to make it work.

	* cg_print.c (cg_print_index): added support for print_path option.

	* cg_dfn.h (cg_dfn): wrap prototype in PARAMS().

	* call_graph.c, gmon_io.c, hist.c: avoid taking address of array
	as some compilers complain (e.g., DEC's OSF/1 compiler)

	* basic_blocks.c, gmon_io.c, hist.c, source.c, sym_ids.c,
	symtab.c: calls to memset() had 2nd and 3rd args reversed.

	Sat Sep 10 21:53:13 1994  David Mosberger-Tang	(davidm@piston.cs.arizona.edu)

	* gprof.c: added "_mcount" to default_excluded_list.
	(main): if output_style==0 and there is either a histogram or a
	call-graph, always generate flat and call-graph, no matter what
	line_granularity is set to.

	* source.c (source_file_lookup_name): if searching for sf->name
	fails, try again with filename obtained after stripping off any
	partial path from sf->name.

	* gprof.h (SRCDEBUG): added.

	* search_list.c (search_list_append): directories were added in wrong
	order.

	* reimplemented selection mechanism from ground up; it is now possible
	to accurately control what gets included/excluded in each of the
	output styles;	a "symbol-specification" (spec) is the basic means
	to select a set of symbols; a spec has the syntax:

	  spec == (FILENAME:(FUNCNAME|LINE_NUM) | NAME).
	  arc == spec/spec.

	any of the terminal symbols can be empty, in which case they
	match anything (wildcards).  NAME is interpreted as a FILENAME
	if it contains a dot (e.g., foo.c), as LINE_NUM if it starts
	with a digit, and as FUNCNAME otherwise.

	For example, to get a call-graph display that ignores arcs
	from foo() to bar(), you'd say "--no-graph=foo/bar"; to
	show only arcs into bar() (no matter what the caller),
	you'd say "--graph=/bar"; and to get a call-graph without
	any arc info, you'd say "--graph=/";  similarly, to
	get a flat profile without mcount, you'd say "--no-flat=mcount"
	and to get a flat profile that shows includes all functions
	you'd say "--flat=""" (i.e., an empty spec)

	* hist.c (hist_print): top_time wasn't initialized to 0.0.

	Fri Sep	 9 01:10:21 1994  David Mosberger-Tang	(davidm@piston.cs.arizona.edu)

	* gmon_out.h: all headers now declared in terms of characters
	  to avoid getting into trouble with different compilers introducing
	  different amount of padding; the code already accessed the fields
	  through bfd functions, so that didn't have to change.

	* hist.c (hist_read_rec, hist_write_rec): added support for
	  collection pc histograms measuring quantities other than time;
	  the histogram header now includes a field that specifies the
	  dimension of the quantity measured by the histogram bins
	  (normally, this is "seconds", but other meaningful dimensions
	   include such things as "I-cache misses", "instruction issue stalls"
	   etc.); there is also a field to specify a one-character
	  abbreviation for the dimension; in the case of time, this would
	  be 's'; in most other cases it probably would be '1' (not a physical
	  dimension).

	Thu Sep	 8 16:05:08 1994  David Mosberger-Tang	(davidm@piston.cs.arizona.edu)

	* gprof.c, gmon_io.[ch]: BSD_COMPATIBLE is gone and new_file_version
	  has become old_file_version; gmon_io.c now always supports old-style
	  gmon.out files; it first tries to read gmon.out as a new version
	  file, if that fails, it tries to read it in the old format;
	  although not very likely, it is possible for gprof to mistake an
	  old-style file as a new one (the first 4 bytes would have to
	  be "gmon"---including the trailing '\0'); in that case, it is
	  necessary to specify --old-file-version

	* gprof.h: removed dependency on SYSV; the code now always uses
	  strrchr(), memset(), and memcpy() and does not include either
	  of string.h or strings.h; this should make gprof compile on
	  any (Unix) system without configuration (per suggestion of
	  raeburn@cygnus.com)

	* gprof.c (usage): fixed location of --new-file-format option.

	* cg_arcs.c (propagate_flags): fixed typo in declaration.

	* flat_bl.m: removed formfeed at end of file; the form-feed
	  is now printed cg_print.c only when necessary.

	* major rewrite of gprof---too many changes to mention all of
	  them.	 new features:

	+ -l now requests profiling at the line level (as opposed
	  to function level); in this mode, gprof creates a "symbol"
	  (aka name-list entry) for each line of source code, instead
	   of one per function)

	+ support for a new gmon.out file format; the new format 
	  consists of a header with a magic and a version number,
	  followed by a sequence of profile data; profile data
	  can any of: (a) PC histogram, (b) call-graph arcs, or
	  (c) basic-block execution counts; the version number makes
	  it possible to extend gmon.out in a backwards compatible
	  fashion

	+ support for tcov style annotated output: if the gmon.out file
	  contains basic-block execution counts, the user can request
	  the generation of annotated source files, much like Sun's
	  tcov used to do

	+ long options

	+ new scheme to suppress symbols that aren't function names
	  (e.g., avoids mistaking a goto label as a function)

	+ reorganized source code to make it more managable; as a
	  side effect, gprof now compiles cleanly with "gcc -Wall"

	Thu Sep	 1 15:46:49 1994  David Mosberger-Tang	(davidm@piston.cs.arizona.edu)

	* gprof.c (funcsymbol): bfd_find_nearest_line() is now used as a
	final cross-check to determine whether a static symbol should be
	considered as a function-name.

	Fri Aug	 5 19:32:36 1994  David Mosberger-Tang	(davidm@piston.cs.arizona.edu)

	* gmon_io.c (gmon_out_read): recognize "-" as the filename for
	stdin; this is useful if you wanna keep gmon.out files compressed;
	this way you can "gzcat" the compressed file into gprof.

	* gprof.c: flag_min_count now initialized with 1 instead of 0.

	* basic_blocks.c (bb_annotate_source): added support for creating
	.tcov files when option flag_annotate_make_files is TRUE.
	(annotate_with_count): all counts less than the minimum count
	specified by -m are now annotated with hash-marks.

	* gprof.c (main): -A is now followed by a string of option chars.

	* basic_blocks.c (annotate_with_count): replaced b->count with
	cnt.

	* source.c: flag_annotate_source replaced by source_lock_map.

	* source.h: source_lock_map added.

	* gprof.c (main): new command-line syntax: -S simply specifies
	which source-files user is interested in; -A requests annotated
	source files and -AA requests that all lines in a source file
	are annotated.

	Thu Aug	 4 23:27:03 1994  David Mosberger-Tang	(davidm@piston.cs.arizona.edu)

	* basic_blocks.c (PATH_MAX): if undefined, define as 1024.

	* sparc.c, i386.c, tahoe.c, vax.c: added include of "time_hist.h"
	so s_lowpc etc. get declared.

	* arcs.h (doarcs): created.

	* arcs.c: reordered static functions such that they get defined
	before use.

	* gprof.c (main): added options:
	   -A: request annotation of all source lines (with -S)
	   -m: minimum execution count (with default basic-block display)
	   -N: force new file format (only if BSD_COMPATIBLE is defined)
	   -S: annotate source file
	   -t: set table length (with -S)

	* Makefile (OBJS): added basic_blocks.o call_graph.o gmon_io.o
	source.o time_hist.o

	Fri Jul	 1 15:23:50 1994  David Mosberger-Tang	(davidm@piston.cs.arizona.edu)

	* gprof.c (asgnsamples): computation of "pcl" and "pch" depended
	on the fact being able to store a long in a double without loss of
	precision; this does not hold on machines with 64 bit longs and 64
	bit doubles.

Fri Oct 21 18:58:02 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* printgprof.c (flatprofheader): Always set totime to 1.0 if not
	greater than 0.0.  Suggested by Harold Assink
	<carlo@sg.tn.tudelft.nl>.

Fri Sep 23 15:06:45 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>

	* printgprof.c (printprof): Use free, not cfree.
	(printgprof, printindex): Ditto.

Thu Sep  1 10:40:45 1994  Jeff Law  (law@snake.cs.utah.edu)

	* gprof.h (kfromlist, ktolist, flist, Flist, elist, Elist): Make
	decls extern to keep native HP compiler quiet.

Tue Aug 30 11:12:13 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* gprof.c (funcsymbol): Ignore ___gnu_compiled as well as
	__gnu_compiled, for the benefit of systems which add a leading
	underscore.

Wed Aug 24 12:49:13 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)

	* configure.in: Change i386-*-* to i[345]86-*-*.

Sun Jul 10 00:35:31 1994  Ian Dall  (dall@hfrd.dsto.gov.au)

	* ns532.c, ns532.h: New Files. ns532 support.

	* config/mt-ns532: New File. ns532 support.

	* gprof.c: user register int i instead of defaulting the int.
	Allows compilation with -Dregister= for debugging.

	* configure.in: Add ns532 support.

Thu Jun 23 11:22:41 1994  Jeff Law  (law@snake.cs.utah.edu)

	* Makefile.in (gprof): Depend on $(LIBS).

Fri May 27 12:24:57 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	From binutils-2.4 release:

	Wed May 11 22:32:00 1994  DJ Delorie (dj@ctron.com)

	* configure.bat: [new] build makefile from makefile.in (dos)
	* hertz.c: allow static HERTZ (msdos needs it)
	* gprof.c: allow target to select "r" or "rb" for fopen
	* gprof.c: ignore __gnu_compiled symbols
	* i386.h: dfine FOPEN_RB to "rb" for dos.

Tue May 17 15:30:22 1994  E. Michael Smith (ems@cygnus.com)

	* Makefile.in (.m.c:):  Added .SUFFIXES : .m 
	so flat_bl.c would make from flat_bl.m file.

Thu May  5 19:23:24 1994  Ken Raeburn  (raeburn@cujo.cygnus.com)

	* Makefile.in (install-info): Check for gprof.info in build dir,
	fall back to srcdir.  Depend on it.

	* gprof.h (TRUE, FALSE): Always use undef before defining them.

Mon Apr  4 23:47:30 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* Makefile.in (MY_MACHINE): Renamed from MACHINE to avoid losing
	makes (osf1) in which the value of MACHINE can not be changed.
	* config/*.mt: Changed appropriately.

Wed Mar 30 16:12:40 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)

	* gprof.c (getsymtab): Change nosyms to long.  Rename
	get_symtab_upper_bound to bfd_get_symtab_upper_bound.  Check for
	errors from bfd_get_symtab_upper_bound and
	bfd_canonicalize_symtab.

Tue Mar 22 10:50:52 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* gprof.c (funcsymbol): Use bfd_get_symbol_info instead of
	bfd_decode_symclass.

Sun Mar 20 15:40:21 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)

	* Makefile.in: Avoid bug in hpux sed.

Wed Dec 15 20:16:40 1993  david d `zoo' zuhn  (zoo@andros.cygnus.com)

	* gprof.texi (Invoking): add text about -v flag

	* gprof.1: add text about -v flag

Wed Dec  8 16:55:06 1993  david d `zoo' zuhn  (zoo@andros.cygnus.com)

	* gprof.c (VERSION): defined a version macro, print the value 
	when the -v option is used

Tue Jul  6 10:11:56 1993  Steve Chamberlain  (sac@phydeaux.cygnus.com)

	* Makefile.in: Install correctly.

Thu Jun 24 14:43:22 1993  David J. Mackenzie  (djm@thepub.cygnus.com)

	* gprof.c (main): Get whoami from argv, instead of hardcoding.
	Use it in usage message.  Split usage message to fit in 80 cols.

Sun Jun 20 20:58:02 1993  Ken Raeburn  (raeburn@poseidon.cygnus.com)

	* Makefile.in: Undo 15 June change.

Wed Jun 16 12:54:53 1993  Steve Chamberlain  (sac@phydeaux.cygnus.com)

	* gmon.h, gprof.h: structs of chars used to hold external
	representations.
	* gprof.c (getpfile, openpfile, readsamples): Swap data in using
	new structures.

Tue Jun 15 23:09:17 1993  Ken Raeburn  (raeburn@cambridge.cygnus.com)

	* Makefile.in (.c.o): Look in ../include, not ../bfd, for bfd.h.

Mon Jun 14 16:22:59 1993  david d `zoo' zuhn  (zoo at rtl.cygnus.com)

	* Makefile.in: remove parentdir support

Mon Jun  7 12:56:17 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* Makefile.in (INCLUDES):  Add -I../bfd for sysdep.h and bfd.h.
	* configure.in:  No longer need to configure to get sysdep.h.

Tue May 18 21:44:11 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in (install): should not depend on install-info

Mon Apr 26 12:37:46 1993  Ian Lance Taylor  (ian@cygnus.com)

	* gprof.h: Include ansidecl.h before sysdep.h.  Undefine hz.

Tue Apr 13 16:14:03 1993  Per Bothner  (bothner@cygnus.com)

	* M Makefile.in:  Add -g to CFLAGS.
	Ads LDFLAGS and use in place of CFLAGS where appropriate.
	* configure.in:  Make a sysdep.hlink in the same way other
	bfd-based directories do.
	* gprof.h (UNIT):  Replace non-standard 'u_short' by 'unsigned
	short'.
	* gprof.h:  #include sysdep.h instead of a bunch of stuff.
	* gprof.c (main):  Fix typo gproff->gprof.

Thu Mar 25 19:00:37 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* gprof.texi: add INFO-DIR-ENTRY

Tue Mar 23 00:03:11 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: add installcheck target

Sat Feb 27 18:17:10 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* gprof.c (funcsymbol):  Invert test for aflag.

Thu Feb 25 16:01:50 1993  Per Bothner  (bothner@rtl.cygnus.com)

	* printgprof (xmalloc, xrealloc):  Cast results of malloc
	and realloc to PTR.

Wed Feb  3 13:55:33 1993  Jeffrey Osier  (jeffrey@fowanton.cygnus.com)

	* Makefile.in: created info, install-info, dvi

Wed Jan  6 00:58:09 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: fix install rule for $(PROG)

Fri Oct  9 11:25:41 1992  Mark Eichin  (eichin@cygnus.com)

	* gprof.1: updated SYNOPSIS to match actual behavior.

Mon Oct  5 17:50:16 1992  Per Bothner  (bothner@cygnus.com)

	* gen-c-prog.awk:  New awk script, lightly changed from
	previously deleted make-c-prog.awk.  Converts a text file
	to a c function that prints that text.
	* flat_bl.m, fsf_callg_bl.m, bsd_callg_bl.m:  New files.
	Inputs to gen-c-prog.awk, containing text describing
	gprof output.
	* blurbs.c:  Removed.  Use *_bl.c instead.
	* Makefile.in: Use gen-cprog.awk to generate *_bl.c files
	from *_bl.m files.  Also, improve *clean rules.
	* printgprof.c (printgprof):  Usw new function names from *_bl.c.
	

Sun Aug 30 19:54:53 1992  Per Bothner  (bothner@rtl.cygnus.com)

	* gprof.h, gprof.c, printfgprof.c:  Add support for two
	output styles:  The default is similar to the old FSF gprof,
	while -T sets the variable bsd_style_output, which causes
	output matching Berkeley's gprof.  The biggest differences
	are that with the FSF style output, the flat profile comes
	before the call graph; numbers come before explanations;
	and there is less gratuitous white space.
	* gprof.h, gprof.c, printfgprof.c:  New discard_underscores
	variable causes discarding of initial underscores when
	printing symbol names.  It is set unless there is a "main"
	symbol (without an underscore).
	* printfgprof.c:  New function printnameonly(), called
	by printname().  It handles stripping of initial '_',
	as well as C++ name-demangling.
	* gprof.callg, gprof.flat, make-c-prog.awk:  Removed.
	It is just as convenient to edit blurbs.c directly.
	* Makefile.in:  Removed rule for making blurbs.c.
	* blurbs.c:  This is now a true source file (as opposed
	to being generated from gprof.callg and gprof.flat).
	Change style to use one long string literal, instead of
	one literal per output line.  Add FSF-style blurb for call graph.

Wed Aug 19 14:36:39 1992  Ian Lance Taylor  (ian@cygnus.com)

	* Makefile.in: always create installation directories.

Wed Aug 12 15:14:14 1992  Mark Eichin  (eichin@cygnus.com)

	* Makefile.in: change ${MACHINE} to $(MACHINE).

Sun Jul 19 17:34:01 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in:  removed installation of the now useless
	call.{flag,callg} files.  

	* gprof.1: now uses the standard man macros instead of the new BSD
	mandoc macros. 

Sun Jul 12 19:06:00 1992  John Gilmore  (gnu at cygnus.com)

	* configure.in:  Remove host section, expand target section.
	* config/mt-{tahoe,vax}:  Add, to match existing support files.
	* config/tmake-*:  Remove leftover crud.

	* blurbs.c:  New file, created from gprof.flat and gprof.callg by
	* make-c-prog.awk:  which processes text files into C programs.
	* printgprof.c (flatprofheader, gprofheader):  Call new functions
	to print blurbs.
	(printblurb):  Remove.
	* Makefile.in:  Infrastructure to build blurbs.
	* pathnames.h:  has been removed.  Gprof now has no filename
	dependencies in it.
	* gprof.c:  Lint.

Sat Jul 11 18:07:21 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)

	* Makefile.in: define man1dir and install the man page

Fri Jul 10 21:14:08 1992  david d `zoo' zuhn (zoo@cygnus.com)

	* Makefile.in: added dummy info and install-info targets

Thu Jun  4 11:34:02 1992  Mark Eichin  (eichin at cygnus.com)

	* lookup.c: fixed fencepost in nllookup and added dbg_nllookup for
	help in debugging the problem (with -DDEBUG)
	* gprof.c: symbol values are now real values, don't add the vma
	anymore. (done for solaris; should verify this on other platforms)
	* ChangeLog: created.
