Hello, 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 == '$') return 0; 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 == '.') break; else if (ISDIGIT (*name)) digit_seen = 1; else return 0; } } 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>? Cheers, Paulo Matos