1995-02-07 23:34:18 +01:00
|
|
|
|
1995-03-14 03:58:16 +01:00
|
|
|
- gmon_io.c cannot deal with target architecture that have a pointer size
|
|
|
|
that is different from the host architectures pointer size---fix this
|
|
|
|
(gmon_out.h, and gmon_io.c)
|
1995-02-07 23:34:18 +01:00
|
|
|
- add support for prof file format so that prof files can be displayed
|
|
|
|
at the line-level (this is useful for the uprofile tool under DEC's
|
|
|
|
OSF/1)
|
Tue Feb 3 14:25:25 1998 Brent Baccala <baccala@freesoft.org>
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.
1998-02-03 20:52:41 +01:00
|
|
|
- take a hard look at --file-ordering (broken) and --function-ordering
|
1995-02-07 23:34:18 +01:00
|
|
|
|
Tue Feb 3 14:25:25 1998 Brent Baccala <baccala@freesoft.org>
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.
1998-02-03 20:52:41 +01:00
|
|
|
+ documentation
|
|
|
|
+ optimize bfd_find_nearest_line_num() (or replace by different interface)
|
1995-02-07 23:34:18 +01:00
|
|
|
+ cleanup _bfd_ecoff_find_nearest_line_num() fixes & description
|
|
|
|
+ ensure "cc -pg" produces good files under OSF/1 v3.0
|
|
|
|
+ make sure gprof works together with OSF/1 v3.0's profiling libraries
|
|
|
|
+ implement symtab_parse(); modify sym_lookup() to consider addr_high
|
|
|
|
+ change gprof.c to collect lists, then invoke symtab_parse() for
|
|
|
|
each list
|
|
|
|
+ Questions:
|
|
|
|
o is -c (--static-call-graph) useful at all? i can't see
|
|
|
|
how; if it were deleted, gprof would be completely machine
|
|
|
|
independent => yup, it is
|
|
|
|
o are (long) option names appropriate?
|
|
|
|
o -k (--exclude-arc) cannot be implemented with getopt();
|
|
|
|
is new syntax (-k from/to) acceptable? If not, how to
|
|
|
|
fix it?
|
|
|
|
o in the FSF output, the call-graph index now prints
|
|
|
|
the filename of static functions in parentheses; e.g.,
|
|
|
|
static function foo() that is defined in file bar.c
|
|
|
|
would be printed as:
|
|
|
|
|
|
|
|
[4] foo (bar.c)
|
|
|
|
|
|
|
|
is this acceptable? should it be done only optionally?
|
|
|
|
o symbols with addresses that map back to a different
|
|
|
|
name are suppressed (happens with labels, for example);
|
|
|
|
is this acceptable? should it be done only optionally?
|
|
|
|
+ generalize to allow arbitrary histograms (not just time histograms)
|
|
|
|
+ basic-block information currently replaces all symbols created from
|
|
|
|
the core because of an ugly ordering conflict---for now, the current
|
|
|
|
solution works, but something cleaner is desirable ==> cleaned up,
|
|
|
|
but it's slower now
|
|
|
|
+ convert to very new file format (back to trivial format, that is :)
|
|
|
|
+ replace "dummy.h" for Alpha (if there is any use to it)
|
|
|
|
+ add support for execution time profiling at a basic-block level
|
|
|
|
+ fix filename-off-by-one bug for Alpha (see ~/tmp/d.[ch])---no longer
|
|
|
|
relevant
|
|
|
|
+ "-pg -a" doesn't work as expected because mcleanup() will overwrite
|
|
|
|
the file generated by __bb_exit_func() (or vice versa)
|
|
|
|
+ first basic-block of fac() seems to get credited to last basic-block
|
|
|
|
of previous function => bug in basic_blocks.c
|
|
|
|
+ flat profile should provide automatic scaling for per-call times because
|
|
|
|
otherwise they'll always be zero on a fast machine with tons of small
|
|
|
|
functions
|
|
|
|
+ make "-a" imply to retain line number info (without actually generating
|
|
|
|
the debugging information (unless -g is specified)---no, this is a
|
|
|
|
bad idea, because it is not clear what level of debugging info should
|
|
|
|
be requested (e.g., -g vs. -g3); leaving it up to the user seems best
|
|
|
|
+ add long options support (or at least use getopt instead of ad-hoc
|
|
|
|
implementation)
|
|
|
|
+ split into files according to abstract objects that are manipulated
|
|
|
|
+ replace sccsid by rcsid & add "end of ..." to every .c file
|
|
|
|
+ use DBG() everywhere
|
|
|
|
+ fix spacing (" ," -> "," etc.)
|
|
|
|
+ use DEFUNs everywhere
|
|
|
|
+ make compile cleanly with -Wall
|
|
|
|
+ "gcc -pg -O2" doesn't work on tecc.c unless -fno-omit-frame-pointer is
|
|
|
|
specified; find out why
|
|
|
|
+ make things portable (prototypes, const, etc.)
|
|
|
|
+ if NEW_GMON_OUT is not defined, have a flag that will allow to
|
|
|
|
read new gmon.out style files. The idea being that everyone
|
|
|
|
will use the new format for basic-block style profiling but
|
|
|
|
the old format for regular gpprofiling
|