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]

Re: binutils 2.11.92.0.6 (Re: binutils 2.11.92.0.5 is broken)


On Mon, Oct 15, 2001 at 09:33:17AM +0930, Alan Modra wrote:
> > > This patch
> > > 
> > > http://sources.redhat.com/ml/binutils/2001-10/msg00035.html
> > > 
> > > is incomplete. You cannot do any backend processing when
> 
> Err, yes.  Thanks for looking into it, HJ.  I've been away this weekend,
> which is why it appears that I've been ignoring the problem.

It is ok. We are on top of it now.

> 
> 
> > Index: elf32-hppa.c
> > ===================================================================
> > RCS file: /work/cvs/gnu/binutils/bfd/elf32-hppa.c,v
> > retrieving revision 1.41
> > diff -u -p -r1.41 elf32-hppa.c
> > --- elf32-hppa.c	2001/10/03 15:55:57	1.41
> > +++ elf32-hppa.c	2001/10/14 06:43:23
> > @@ -1147,7 +1147,7 @@ elf32_hppa_copy_indirect_symbol (dir, in
> >        edir->dyn_relocs = eind->dyn_relocs;
> >        eind->dyn_relocs = NULL;
> >      }
> > -  else if (eind->dyn_relocs != NULL)
> > +  else if (dir != ind->weakdef && eind->dyn_relocs != NULL)
> 
> I suspect this is not the correct fix.  dyn_relocs is being used to count
> relocs, and probably what should happen is something like
> 
>   else if (eind->dyn_relocs != NULL)
>     {
>       struct elf32_hppa_dyn_reloc_entry *p;
> 
>       if (edir != eind->elf.weakdef)
> 	abort ();
> 
>       /* Add reloc counts against the weak sym to the strong sym list.
> 	 Entries on the eind list should have a different p->sec from
> 	 any on the dir list, so we don't need to merge entries.  */
>       for (p = eind->dyn_relocs; p->next != NULL; p = p->next)
> 	;
>       p->next = edir->dyn_relocs;
>       edir->dyn_relocs = eind->dyn_relocs;
>       eind->dyn_relocs = NULL;
>     }
> 
> Untested as yet, because I don't have a testcase.  I'll see if I can
> dream one up.

I am not sure. Feel free to experiment. Please make sure you at least
can build telnetd on Linux/x86.

> 
> > --- elflink.h	2001/10/05 20:32:13	1.82
> > +++ elflink.h	2001/10/11 18:15:44	1.83
> > +     As above, we permit a non-weak definition in a shared object to
> > +     override a weak definition in a regular object.  */
> 
> I don't disagree with this change, but has this been discussed sufficiently
> here and on the glibc list?

That is to back out my own change to elf_merge_symbol in binutils
2.11.92.0.5 to fix a mips linker bug. But I have a better fix. See

http://sources.redhat.com/ml/binutils/2001-10/msg00203.html

Thanks.


H.J.


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