On Wed, Feb 4, 2015 at 10:57 AM, H.J. Lu <hjl.to...@gmail.com> wrote: > On Wed, Feb 4, 2015 at 10:51 AM, Sriraman Tallam <tmsri...@google.com> wrote: >> On Wed, Feb 4, 2015 at 10:45 AM, H.J. Lu <hjl.to...@gmail.com> wrote: >>> On Wed, Feb 4, 2015 at 10:42 AM, Jakub Jelinek <ja...@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) local_p = false; For weak definition, it is set to false here. Sri > > > -- > H.J.