Just that I need to set each functions in a C file into different sections, with section names I can link in different segments.
That can be done with:
__attribute__ ((section ("sect1_fct1"))) void fct1 (void) {}
__attribute__ ((section ("sect1_fct2"))) void fct2 (void) {}
But cannot unfortunately be done in a macro like:
__attribute__ ((section ("sect1_" __FUNCTION__ ))) void fct1 (void) {}
It would be nice to have some way to do that, like:
__attribute__ ((section_prepend ("sect1_"))) void fct1 (void) {}
so that a bad cut&paste somewhere do not create problems because
a function is in the wrong section (by forgeting to change the
concat'ed string).

What about doing something like:
#define function_def(base_section, funname, RET, ARGS) __attribute__((__section__(base_section ##funname))) RET funname ARGS
#define basesect "sect1_"
function_def(basesect, fct1, void, (void));
So you won't have a copy and paste error at all and it works without any real changes to the compiler.