blob: b1955f3705d92f0adf941c4b749b386233c4c66f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#include <unistd.h>
#include <sys/gmon.h>
extern struct monparam mparam;
void __mcount (unsigned long, unsigned long) PROF_SECTION;
void
__mcount (unsigned long frompc, unsigned long selfpc)
{
struct rawarc *arc = mparam.arcs, thisarc;
unsigned long num;
/* If arc already exists, increment count */
for (num = 0; num < mparam.arcnum; num++)
if (arc[num].raw_frompc == frompc && arc[num].raw_selfpc == selfpc) {
arc[num].raw_count++;
return;
}
if (selfpc < mparam.lowpc || selfpc > mparam.highpc) return;
thisarc.raw_frompc = frompc;
thisarc.raw_selfpc = selfpc;
thisarc.raw_count = 1;
arc[mparam.arcnum++] = thisarc;
}
|