This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
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.