This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
The following GCC patch has been submitted for review. It helps detect mismatches between the type of an ifunc or alias declaration and the type of the resolver or alias. https://gcc.gnu.org/ml/gcc-patches/2017-08/msg01103.html To let Glibc take advantage of this type checking and avoid warnings when using the patched GCC when the change above is committed, the patch below adjusts the Glibc __ifunc_resolver macro to declare the ifunc resolver so that its return type matches that of the target. (I was going to wait to submit it until after the GCC patch has been accepted but per Joseph's suggestion I'm posting it here ahead of time.) The patch has been tested on its own with the system GCC 6.3 and with the patched GCC on x86_64-linux with no regressions. Martin diff --git a/include/libc-symbols.h b/include/libc-symbols.h index fe3ab81..5413e56 100644 --- a/include/libc-symbols.h +++ b/include/libc-symbols.h @@ -790,7 +790,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; \
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |