This is the mail archive of the
mailing list for the GCC project.
Re: gmon.out creation procedure
Thanks you very much for the clear details. Definitely your inputs are
1) I am sure that in gcc-4.0 I found there is file gmon.c in the path
gcc-4.0.0/gcc/gmon.c. Anyhow let me concentrate on gmon.c of glibc.
2) Next thing I would like to know is to better understand the gmon.c of
glibc I would like to degug glibc. since glibc is linked with gcc, I built
gcc and glibc separately. while debugging gcc is referring shared glib
library, but not the one I built freshly for debugging purpose. To make
this happen, where I need to change the path to like both gcc and glibc ?
3) Please correct me If I am wrong
a. for every function mcount() function is called to collect the caller
and callee address. where this collected info is placed ?
b. the flow of monstartup() function
monstartup()-->moncontrol() --> profil()
who will call the monstartup() ? is it gcrt0 ? before calling the
main() function of our routine ?
c. write_profiling() ---> write_gmon() functions calls write_hist(),
write_call_graph() and write_bb_counts(). here who calls the
d. mcleanup() calls write_gmon(). who calls the mcleanup() ? is it
gcrt0 ? after control return from main() function ?
Thanks and Regards
> 2008/5/19 <email@example.com>:
>> I am Raja, I need a favor on understand how the gmon.out file is
>> Please help me.
>> 1. gmon.c is available in both gcc and glibc. Which is the one used to
>> create gmon.out ?
> I don't think gcc has gmon.c. Only glibc has it. You can also find
> gmon in newlib for some targets. But this will be customized for the
>> 2. Can you brief how profile information required to create gmon.out is
>> captured?���"B"BWhich are the functions are
responsible for this ?
> These days gmon.c is used only to get histogram records(time related
> infomation). All the other information is now produced by gcc itself,
> than can be analyzed using gcov. (You will get gcov when you build
> For histogram records, gmon.c code primarily uses 'profil' system
> call. You can get more information about this in man pages. And of
> course you will get to know how this is used if you go through the
> code in gmon.c
> When -pg switch is enabled all complier does is inserting a call to
> the function mcount, usually after the function prologue. This is the
> function the collects all the needed information. For profiling
> information about caller address and callee address is necessary. If
> this information cannot be obtained using __bultin_return_address then
> this is calculated by mcount in a target specific manner and passed
> onto another function that takes these address as the arguments and
> gathers the profiling information.
>> 3. Suppose assume that executable is built without ��Cpg
>> to create gmon.out at run-time. Is there any way or guidelines to
> A call to the profiling function (mcount) should be there to generate
> profiling information. Without that you won't be able to generate
> Hope this helps,
>> Thanks and Regards
>> Raja Saleru