The __ifunc_resolver macro expands to:
extern __typeof (__redirect_name) name __attribute__ ((ifunc ("iname_ifunc")));
static __typeof (__redirect_name) *name_ifunc (void) { [...] };
And although NAME_IFUNC is and alias for NAME, clang-18 still emits
an 'unused function 'name_ifunc' [-Werror,-Wunused-function]'
warning.
#include <stdbool.h>
#include <stdio.h>
+#include <libc-diag.h>
#if __GNUC_PREREQ (5, 5)
/* Do not use the test framework, so that the process setup is not
return random_constant;
}
+DIAG_PUSH_NEEDS_COMMENT_CLANG;
+DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wunused-function");
static __typeof__ (implementation) *
inhibit_stack_protector
resolver (void)
}
static int magic (void) __attribute__ ((ifunc ("resolver")));
+DIAG_POP_NEEDS_COMMENT_CLANG;
int
main (void)
relocations. */
#include <config.h>
+#include <libc-diag.h>
#ifdef HAVE_GCC_IFUNC
*p = 0;
}
+DIAG_PUSH_NEEDS_COMMENT_CLANG;
+DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wunused-function");
static __typeof__ (implementation) *
resolver (void)
{
*p = 0;
return implementation;
}
+DIAG_POP_NEEDS_COMMENT_CLANG;
static void magic (void) __attribute__ ((ifunc ("resolver")));