public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Martin Sebor <msebor@gmail.com>
To: GNU C Library <libc-alpha@sourceware.org>
Subject: [PATCH] have ifunc resolver's return type match target
Date: Sun, 20 Aug 2017 22:30:00 -0000	[thread overview]
Message-ID: <f967b8f5-6802-f848-ba68-b1df8069d379@gmail.com> (raw)

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;                                  \

             reply	other threads:[~2017-08-20 22:30 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-20 22:30 Martin Sebor [this message]
2017-08-21 13:26 ` Joseph Myers
2017-08-22 18:02 ` [PATCH] Fix remaining return type of ifunc resolver declaration Gabriel F. T. Gomes
2017-08-22 18:54   ` Martin Sebor
2017-08-22 20:14   ` Joseph Myers
2017-08-22 22:54     ` Gabriel F. T. Gomes
2017-08-23  9:28 ` [PATCH] have ifunc resolver's return type match target Florian Weimer
2017-08-23 14:48   ` Martin Sebor
2017-09-19 17:07     ` Florian Weimer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f967b8f5-6802-f848-ba68-b1df8069d379@gmail.com \
    --to=msebor@gmail.com \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).