public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: "H.J. Lu" <hjl.tools@gmail.com>
To: Sriraman Tallam <tmsriram@google.com>
Cc: Richard Henderson <rth@redhat.com>,
	GCC Patches <gcc-patches@gcc.gnu.org>,
		David Li <davidxl@google.com>,
	Cary Coutant <ccoutant@google.com>,
		Ian Lance Taylor <iant@google.com>,
	Paul Pluzhnikov <ppluzhnikov@google.com>
Subject: Re: [PATCH x86_64] Optimize access to globals in "-fpie -pie" builds with copy relocations
Date: Tue, 02 Dec 2014 19:06:00 -0000	[thread overview]
Message-ID: <CAMe9rOqvEhffx3xvfSGT=6-pD_GLekRTwZTjZYo4VzU_CfHqsA@mail.gmail.com> (raw)
In-Reply-To: <CAAs8HmzLve+KEJjxMVHrZVEVF+ZxrtJ4rO3Ov1jmBiXb2Jg55Q@mail.gmail.com>

On Mon, Sep 8, 2014 at 3:19 PM, Sriraman Tallam <tmsriram@google.com> wrote:
> On Tue, Sep 2, 2014 at 1:40 PM, Richard Henderson <rth@redhat.com> wrote:
>> On 06/20/2014 05:17 PM, Sriraman Tallam wrote:
>>> Index: config/i386/i386.c
>>> ===================================================================
>>> --- config/i386/i386.c        (revision 211826)
>>> +++ config/i386/i386.c        (working copy)
>>> @@ -12691,7 +12691,9 @@ legitimate_pic_address_disp_p (rtx disp)
>>>               return true;
>>>           }
>>>         else if (!SYMBOL_REF_FAR_ADDR_P (op0)
>>> -                && SYMBOL_REF_LOCAL_P (op0)
>>> +                && (SYMBOL_REF_LOCAL_P (op0)
>>> +                    || (TARGET_64BIT && ix86_copyrelocs && flag_pie
>>> +                        && !SYMBOL_REF_FUNCTION_P (op0)))
>>>                  && ix86_cmodel != CM_LARGE_PIC)
>>>           return true;
>>>         break;
>>
>> This is the wrong place to patch.
>>
>> You ought to be adjusting SYMBOL_REF_LOCAL_P, by providing a modified
>> TARGET_BINDS_LOCAL_P.
>
> I have done this in the new attached patch, I added a new function
> i386_binds_local_p which will check for this and call
> default_binds_local_p otherwise.
>
>>
>> Note in particular that I believe that you are doing the wrong thing with weak
>> and COMMON symbols, in that you probably ought not force a copy reloc there.
>
> I added an extra check to not do this for WEAK symbols. I also added a
> check for DECL_EXTERNAL so I believe this will also not be called for
> COMMON symbols.
>
>>
>> Note the complexity of default_binds_local_p_1, and the fact that all you
>> really want to modify is
>>
>>   /* If PIC, then assume that any global name can be overridden by
>>      symbols resolved from other modules.  */
>>   else if (shlib)
>>     local_p = false;
>>
>> near the bottom of that function.
>
> I did not understand what you mean here? Were you suggesting an
> alternative way of doing this?
>
> Thanks for reviewing

I'd like to see a few testcases:

1. One test to show it does the right thing for external variable.
2. One test to show it does the right thing for common symbol.
3. One test to show it does the right thing for weak symbol.
4. One test to show it does the right thing for external function.

Thanks.

-- 
H.J.

  parent reply	other threads:[~2014-12-02 19:06 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-15 18:34 Sriraman Tallam
2014-05-19 18:11 ` Sriraman Tallam
2014-06-09 22:55   ` Sriraman Tallam
2014-06-21  0:17     ` Sriraman Tallam
2014-06-26 17:55       ` Sriraman Tallam
2014-07-11 17:42         ` Sriraman Tallam
2014-09-02 18:15           ` Sriraman Tallam
2014-09-02 20:40       ` Richard Henderson
2014-09-03  7:25         ` Bernhard Reutner-Fischer
2014-09-08 22:19         ` Sriraman Tallam
2014-09-19 21:11           ` Sriraman Tallam
2014-09-29 17:57             ` Sriraman Tallam
2014-10-06 20:43               ` Sriraman Tallam
2014-11-10 23:35                 ` Sriraman Tallam
2014-12-02 18:01                   ` Sriraman Tallam
2014-12-02 19:06           ` H.J. Lu [this message]
2014-12-02 19:19 Uros Bizjak
2014-12-02 19:39 ` H.J. Lu
2014-12-02 19:40 ` H.J. Lu
2014-12-02 20:01   ` Uros Bizjak
2014-12-02 20:43     ` H.J. Lu
2014-12-02 20:19       ` Jakub Jelinek
2014-12-02 22:14         ` H.J. Lu
2014-12-02 23:21           ` H.J. Lu
2014-12-03 13:47     ` H.J. Lu
2014-12-03 15:01       ` H.J. Lu
2014-12-03 21:35         ` H.J. Lu
2014-12-04 12:44           ` Uros Bizjak
2014-12-04 16:46             ` H.J. Lu
2014-12-04 19:32               ` Uros Bizjak
2015-02-03 19:25               ` Sriraman Tallam
2015-02-03 19:26                 ` Sriraman Tallam
2015-02-03 19:36                 ` Jakub Jelinek
2015-02-03 21:20                   ` Sriraman Tallam
2015-02-03 21:29                     ` H.J. Lu
2015-02-03 21:36                       ` Sriraman Tallam
2015-02-03 22:03                         ` H.J. Lu
2015-02-03 22:19                           ` Jakub Jelinek
2015-02-04  1:16                             ` H.J. Lu
2015-02-04 18:27                               ` Sriraman Tallam
2015-02-04 18:31                                 ` Jakub Jelinek
2015-02-04 18:38                                   ` H.J. Lu
2015-02-04 18:42                                     ` Jakub Jelinek
2015-02-04 18:45                                       ` H.J. Lu
2015-02-04 18:51                                         ` Sriraman Tallam
2015-02-04 18:57                                           ` H.J. Lu
2015-02-04 21:53                                             ` Sriraman Tallam
2015-02-04 22:37                                               ` H.J. Lu
2015-02-04 22:47                                                 ` Bernhard Reutner-Fischer
2015-02-04 23:10                                                   ` H.J. Lu
2015-02-04 23:29                                                     ` H.J. Lu
2015-02-05 16:57                                                       ` Bernhard Reutner-Fischer
2015-02-05 18:54                                                       ` Richard Henderson
2015-02-05 19:01                                                         ` H.J. Lu
2015-02-05 19:59                                                           ` Richard Henderson
2015-02-05 22:05                                                             ` Sriraman Tallam
2015-02-05 22:47                                                               ` H.J. Lu
2015-02-05 22:48                                                                 ` Sriraman Tallam
2015-02-06 16:25                                                               ` H.J. Lu
2015-02-27 23:39               ` H.J. Lu
2015-02-27 23:46                 ` H.J. Lu
2014-12-04 22:19 Dominique Dhumieres
2014-12-04 23:54 ` H.J. Lu

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='CAMe9rOqvEhffx3xvfSGT=6-pD_GLekRTwZTjZYo4VzU_CfHqsA@mail.gmail.com' \
    --to=hjl.tools@gmail.com \
    --cc=ccoutant@google.com \
    --cc=davidxl@google.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=iant@google.com \
    --cc=ppluzhnikov@google.com \
    --cc=rth@redhat.com \
    --cc=tmsriram@google.com \
    /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).