On Wed, Oct 13, 2010 at 02:43:18PM -0700, Sebastian wrote: > On Wed, Oct 13, 2010 H.J. Lu wrote: > > gcc can not dump a callgraph. Both GNU ld and gold can dump a > > cross-reference table, which is not a call graph but could perhaps be > > used to produce a call graph. See the --cref option. > --cref isn't much use. It doesn't tell me which functions call other > functions, only which modules refer to them. > > Static analysis which work on source code are not ideal, either. They > don't know which functions will be inlined by the compiler. > > So it would be nice if gcc could provide a call graph.
gcc compiles only one object file at a time; to produce a call graph you'd need data produced by the linker. gcc cannot provide a call graph. To get a call graph, you'd need to combine data produced by the compiler (with stack-usage) and data produced by the linker (--cref). It probably wouldn't be too hard to produce such a tool using a scripting language (perl or python, say) to parse the outputs from the compile and link steps.