This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH x86_64] Optimize access to globals in "-fpie -pie" builds with copy relocations
- From: Bernhard Reutner-Fischer <rep dot dot dot nop at gmail dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: Sriraman Tallam <tmsriram at google dot com>,Jakub Jelinek <jakub at redhat dot com>,Uros Bizjak <ubizjak at gmail dot com>,"gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>,David Li <davidxl at google dot com>,Cary Coutant <ccoutant at google dot com>
- Date: Thu, 05 Feb 2015 17:57:47 +0100
- Subject: Re: [PATCH x86_64] Optimize access to globals in "-fpie -pie" builds with copy relocations
- Authentication-results: sourceware.org; auth=none
- References: <20150203193615 dot GZ1746 at tucnak dot redhat dot com> <CAMe9rOouVu9Ndgf231iOt=ry0jWiw573H+y1KxycWkqSw=unOA at mail dot gmail dot com> <20150203221935 dot GA1746 at tucnak dot redhat dot com> <CAMe9rOq-A3YebgJ_xRnQDekYuvRw6C9GD9DYbhUizvr3OPad_Q at mail dot gmail dot com> <CAAs8Hmxdx1n+hgJ0oTAufPauz=S67oM2F_NAmyTzzUSh-ic=4Q at mail dot gmail dot com> <20150204183127 dot GU1746 at tucnak dot redhat dot com> <CAMe9rOpWUnex45v3hM9=tDNfnC6ipJ-hMEkiY1714Km15bL=bg at mail dot gmail dot com> <20150204184205 dot GW1746 at tucnak dot redhat dot com> <CAMe9rOoWkw==PQZt1hR1xjKaVxwkFh39vNbFb1WFbaxgxofJMA at mail dot gmail dot com> <CAAs8HmzByYULg8y0F2DnVo0YBnh__Jx2xSrvAoMYuWPJJb2q6A at mail dot gmail dot com> <CAMe9rOpFiaRuauCqFwUxYPEo46jPiQf8=W9+7Cf8q=1QCm0sEA at mail dot gmail dot com> <CAAs8HmwHY-vNEBdULByHYU__xKcKOarMqr-+69VRxo_kBkzwxw at mail dot gmail dot com> <CAMe9rOoGdDBpn12LFyTqdbfhdOxXgw4i9Xmk34fj=K+KzhSoAw at mail dot gmail dot com> <50365BC5-5D7C-423A-803B-F8F6F040C865 at gmail dot com> <CAMe9rOqyFr_dUHCNccrYDPP8_Xq=4=TfLe-24_nLxigUQy0K1A at mail dot gmail dot com> <CAMe9rOpAnkfsJMXMM=MGNfqsCsLeBdNwmyCqLk6FbbrULbKigQ at mail dot gmail dot com>
On February 5, 2015 12:29:40 AM GMT+01:00, "H.J. Lu" <hjl.tools@gmail.com> wrote:
>On Wed, Feb 4, 2015 at 3:10 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Wed, Feb 4, 2015 at 2:47 PM, Bernhard Reutner-Fischer
>> <rep.dot.nop@gmail.com> wrote:
>>> On February 4, 2015 11:37:01 PM GMT+01:00, "H.J. Lu"
><hjl.tools@gmail.com> wrote:
>>>>On Wed, Feb 4, 2015 at 1:53 PM, Sriraman Tallam
><tmsriram@google.com>
>>>>wrote:
>>>>> On Wed, Feb 4, 2015 at 10:57 AM, H.J. Lu <hjl.tools@gmail.com>
>wrote:
>>>>>> On Wed, Feb 4, 2015 at 10:51 AM, Sriraman Tallam
>>>><tmsriram@google.com> wrote:
>>>>>>> On Wed, Feb 4, 2015 at 10:45 AM, H.J. Lu <hjl.tools@gmail.com>
>>>>wrote:
>>>>>>>> On Wed, Feb 4, 2015 at 10:42 AM, Jakub Jelinek
><jakub@redhat.com>
>>>>wrote:
>>>>>>>>> On Wed, Feb 04, 2015 at 10:38:48AM -0800, H.J. Lu wrote:
>>>>>>>>>> Common symbol should be resolved locally for PIE.
>>>>>>>>>
>>>>>>>>> binds_local_p yes, binds_to_current_def_p no.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Is SYMBOL_REF_LOCAL_P set to binds_local_p or
>>>>>>>> binds_to_current_def_p?
>>>>>>>
>>>>>>> Looks like binds_local_p:
>>>>>>>
>>>>>>> varasm.c:
>>>>>>> void
>>>>>>> default_encode_section_info (tree decl, rtx rtl, int first
>>>>ATTRIBUTE_UNUSED)
>>>>>>> {
>>>>>>> ...
>>>>>>> if (targetm.binds_local_p (decl))
>>>>>>> flags |= SYMBOL_FLAG_LOCAL;
>>>>>>>
>>>>>>
>>>>>> Why is SYMBOL_REF_LOCAL_P false?
>>>>>
>>>>> In varasm.c, default_binds_local_p_1
>>>>>
>>>>>
>>>>> /* Default visibility weak data can be overridden by a strong
>symbol
>>>>> in another module and so are not local. */
>>>>> else if (DECL_WEAK (exp)
>>>>> && !resolved_locally)
>>>> ^^^^^^^^^^^^^^^^^^^
>>>>Why is resolved_locally false? It should be true for common
>>>>symbol when compiling for PIE.
>>>>
>>>>> local_p = false;
>>>>>
>>>>> For weak definition, it is set to false here.
>>>
>>> Yea and i think this is still wrong and known as
>>> http://gcc.gnu.org/PR32219
>>>
>>
>
>I am testing this patch.
I cannot test it ATM, sorry.
Please make sure to add the test case from the PR32219, comment13 https://gcc.gnu.org/bugzilla/attachment.cgi?id=27716&action=diff#gcc-4_7-branch/gcc/testsuite/gcc.dg/visibility-21.c_sec1
The PR33219 should be marked as 4.8, 4.9, 5.0 regression, too.
Thanks for taking care of this one!