This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PATCH: A symbol visibility problem


On Wed, Jan 28, 2004 at 11:46:36AM -0800, H. J. Lu wrote:
> On Wed, Jan 28, 2004 at 11:32:42AM +0000, Nick Clifton wrote:
> > Hi H. J. Lu" <hjl@lucon.org> writes:
> > 
> > > The problem is
> > >
> > >       /* If the new symbol with non-default visibility comes from a
> > >          relocatable file and the old definition comes from a dynamic
> > >          object, we remove the old definition.  */
> > >       if ((*sym_hash)->root.type == bfd_link_hash_indirect)
> > >         h = *sym_hash;
> > >       h->root.type = bfd_link_hash_new;
> > >       h->root.u.undef.abfd = NULL;
> > >  
> > > If the new entry with non-default visibility is undefined, then
> > > setting the type to bfd_link_hash_new will lead to the
> > > assertion. Should we use
> > >
> > > 	h->root.type = bfd_link_hash_undefined;
> > >
> > > instead and let _bfd_generic_link_add_one_symbol take care of it?
> > 
> > That seems sensible, but I think only if the new symbol is undefined.
> > 
> > Do you have a patch to propose for this ?
> > 
> 
> It is more complex than I thought. When we remove the old definition
> coming from a DSO, we need to restore the previous state if the new
> symbol is undefined. Set it to bfd_link_hash_undefined is wrong if
> it was referenced before because the new symbol can be weak undefined,
> which may lead to undefined symbol error. We can tell if it has been
> referenced by checking h->root.und_next. The main problem is how to
> maintain the linker hash table undefs list. If h->root.und_next is
> not NULL, h may or may not be on the linker hash table undefs list.
> We need to make sure it is on the linker hash table undefs list and
> the undefs list won't be corrupted by it.
> 
> 

This patch tries to do it right.


H.J.

Attachment: bfd-vsb-undef-1.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]