[2.26 COMMITTED] Declare ifunc resolver to return a pointer to the same type as the target function to help GCC detect incompatibilities between the two when it's enhanced to do so.

Florian Weimer fweimer@redhat.com
Sun Jan 1 00:00:00 GMT 2017


From: Martin Sebor <msebor@redhat.com>

(cherry picked from commit ee4e992ebe5f9712faedeefe8958b67d61eaa0f2)

2017-08-22  Martin Sebor  <msebor@redhat.com>

	* include/libc-symbols.h (__ifunc_resolver): Declare resolver
	to return a pointer to the same type as the target function.

diff --git a/include/libc-symbols.h b/include/libc-symbols.h
index 3310e3a678..c50f9adec2 100644
--- a/include/libc-symbols.h
+++ b/include/libc-symbols.h
@@ -782,7 +782,8 @@ for linking")
 
 /* Helper / base  macros for indirect function symbols.  */
 #define __ifunc_resolver(type_name, name, expr, arg, init, classifier)	\
-  classifier inhibit_stack_protector void *name##_ifunc (arg)					\
+  classifier inhibit_stack_protector					\
+  __typeof (type_name) *name##_ifunc (arg)				\
   {									\
     init ();								\
     __typeof (type_name) *res = expr;					\



More information about the Libc-stable mailing list