Node:Profiling, Next:Tail Calls, Previous:Function Entry, Up:Stack and Calling
These macros will help you generate code for profiling.
FUNCTION_PROFILER (file, labelno)
mcount.
The details of how mcount expects to be called are determined by
your operating system environment, not by GCC. To figure them out,
compile a small program for profiling using the system's installed C
compiler and look at the assembler code that results.
Older implementations of mcount expect the address of a counter
variable to be loaded into some register. The name of this variable is
LP followed by the number labelno, so you would generate
the name using LP%d in a fprintf.
PROFILE_HOOK
mcount even the target does
not support profiling.
NO_PROFILE_COUNTERS
mcount subroutine on your system does
not need a counter variable allocated for each function. This is true
for almost all modern implementations. If you define this macro, you
must not use the labelno argument to FUNCTION_PROFILER.
PROFILE_BEFORE_PROLOGUE
TARGET_ALLOWS_PROFILING_WITHOUT_FRAME_POINTER
mcount routine provided by the GNU C Library finds the
address of the routine that called the routine that called mcount
by looking in the immediate caller's stack frame. If the immediate
caller has no frame pointer, this lookup will fail.
By default, GCC assumes that the target does allow profiling when the
frame pointer is omitted. This macro should be defined to a C
expression that evaluates to false if the target does not allow
profiling when the frame pointer is omitted.