This is the mail archive of the
mailing list for the GCC project.
Clarification of cloned function names during profiling
- From: "Paulo Matos" <pmatos at broadcom dot com>
- To: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>
- Date: Thu, 28 Mar 2013 09:40:50 +0000
- Subject: Clarification of cloned function names during profiling
I have been investigating gcc and gprof interaction.
I have noticed something strange, even though I cannot reproduce an example.
In certain situations, GCC will produce functions called foo.isra.0 or foo.constprop.0.
These function names are created by clone_function_name where suffix is isra or constprop.
On the other hand in gprof/corefile.c (function core_sym_class) of binutils, symbols that don't include a '.clone.' (which used to be generated by 4.5 at least) are discarded (from 2.23.2).
for (name = sym->name; *name; ++name)
if (*name == '$')
while (*name == '.')
/* Allow both nested subprograms (which end with ".NNN", where N is
a digit) and GCC cloned functions (which contain ".clone").
Allow for multiple iterations of both - apparently GCC can clone
clones and subprograms. */
int digit_seen = 0;
#define CLONE_NAME ".clone."
#define CLONE_NAME_LEN strlen (CLONE_NAME)
if (strlen (name) > CLONE_NAME_LEN
&& strncmp (name, CLONE_NAME, CLONE_NAME_LEN) == 0)
name += CLONE_NAME_LEN - 1;
for (name++; *name; name++)
if (digit_seen && *name == '.')
else if (ISDIGIT (*name))
digit_seen = 1;
My question is, how does this work with recent gcc's and binutils'? If I use -pg on gcc, will gcc stop outputting functions with isra, constprop, etc suffixes and revert to clone suffixes or will it just use .<number>?