On Wed, Feb 4, 2015 at 3:10 PM, H.J. Lu wrote: > On Wed, Feb 4, 2015 at 2:47 PM, Bernhard Reutner-Fischer > wrote: >> On February 4, 2015 11:37:01 PM GMT+01:00, "H.J. Lu" wrote: >>>On Wed, Feb 4, 2015 at 1:53 PM, Sriraman Tallam >>>wrote: >>>> On Wed, Feb 4, 2015 at 10:57 AM, H.J. Lu wrote: >>>>> On Wed, Feb 4, 2015 at 10:51 AM, Sriraman Tallam >>> wrote: >>>>>> On Wed, Feb 4, 2015 at 10:45 AM, H.J. Lu >>>wrote: >>>>>>> On Wed, Feb 4, 2015 at 10:42 AM, Jakub Jelinek >>>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. -- H.J.