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