https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98121
--- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> ---
[hjl@gnu-cfl-2 tmp]$ cat x.c
struct dtv_slotinfo_list
{
struct dtv_slotinfo_list *next;
};
extern struct dtv_slotinfo_list *list;
static int __attribute__ ((section ("__libc_freeres_fn")))
free_slotinfo (struct dtv_slotinfo_list **elemp)
{
if (!free_slotinfo (&(*elemp)->next))
return 0;
return 1;
}
__attribute__ ((used, section ("__libc_freeres_fn")))
static void free_mem (void)
{
free_slotinfo (&list);
}
[hjl@gnu-cfl-2 tmp]$ /usr/gcc-11.0.0-x32/bin/gcc -S -O2 x.c -fPIC
x.c: In function ‘free_mem’:
x.c:17:13: error: ‘free_mem’ causes a section type conflict with
‘free_slotinfo.isra’
17 | static void free_mem (void)
| ^~~~~~~~
x.c:9:1: note: ‘free_slotinfo.isra’ was declared here
9 | free_slotinfo (struct dtv_slotinfo_list **elemp)
| ^~~~~~~~~~~~~
[hjl@gnu-cfl-2 tmp]$