To prepare for using the prof program, the programmer gives the
C compiler and linkers an option (usually -p) at compile- and
link-time. The compiler generates additional code in each function's
prologue, including a call to the function mcount(), and creates
an unique storage slot for each function; the linker links in a special startup function.
During program execution, the startup function enables a periodic
operating system timer interrupt, which typically operates at 100
Hertz. The handler for the interrupt samples the program counter (PC)
value when the interrupt occurs and uses it to index to the
appropriate bin, which stores a count that it increments. Data
gathered is thus of a statistical nature. The prof program
post-processes the raw bin counts into human-readable output by
totalling the counts in the bins which correspond to each function
symbol in the executable's symbol table.