/usr/share/doc/dietlibc-doc/profiling.README is in dietlibc-doc 0.34~cvs20160606-7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | Notes on profiling support for dietlibc
1.) A big problem when doing profiling on statically linked
programs, is that the internal profiling functions (mcount
and friends) will be included in the call graph although
they would not if the program would have been dynamically
linked. This is because every symbol between .text and
_etext is included in the call-graph. If a program is
dynamically linked, then mcount and friends are not between
.text and _etext, so they are not included. A workaround
for this, would be to put mcount, __mcount, monitor and
profiler into another section (eg. ".profile"), but this
creates some strange problems, I'm currently not aware of.
If you want to debug this: Putting a function into a specific
section works like this (with gcc):
void foo (int bar) __attribute__ ((section(".foobar")))
2.) _start may randomly be found in the callgraph. I don't
know why. May be a bug in gprof.
3.) The profiling is a complete rewrite, though I looked at
the glibc Version for inspiration. Please note that this
version might not be as portable as the glibc version but
its much smaller (although this is not a really important
argument, as profiled binaries seldom get shipped) and
hopefully easier to understand.
4.) all objects that should be profiled mustn't be compiled
with -fomit-frame-pointer (as with glibc). Add
-fno-fomit-frame-pointer to $CFLAGS if you're encountering
weird problems.
5.) There is currently no basic-block statistic support.
Please send comments and bug reports to: tom@rhadamanthys.org
|