Subject: Re: BFD/ld lossage on MIPS with NEW_TOOLCHAIN
To: Rafal Boni <rafal@mediaone.net>
From: Charles M. Hannum <abuse@spamalicious.com>
List: tech-toolchain
Date: 10/08/2001 06:12:11
> Index: symbol.c
> ===================================================================
> RCS file: /cvsroot/basesrc/libexec/ld.elf_so/symbol.c,v
> retrieving revision 1.10
> diff -b -u -r1.10 symbol.c
> --- symbol.c 2000/10/11 20:46:08 1.10
> +++ symbol.c 2001/10/07 03:22:47
> @@ -163,7 +163,7 @@
> bool in_plt;
> {
> Elf_Addr symnum = ELF_R_SYM(r_info);
> - const Elf_Sym *ref = NULL;
> + const Elf_Sym *ref;
> const Elf_Sym *def;
> const Elf_Sym *symp;
> const Obj_Entry *obj;
> @@ -171,10 +171,10 @@
> const Objlist_Entry *elm;
> unsigned long hash;
>
> - if (name == NULL) {
> ref = refobj->symtab + symnum;
> + if (name == NULL)
> name = refobj->strtab + ref->st_name;
> - }
> +
> hash = _rtld_elf_hash(name);
> def = NULL;
> defobj = NULL;
> @@ -227,6 +227,7 @@
> * symbol as having the value zero.
> */
> if (def == NULL && ELF_ST_BIND(ref->st_info) == STB_WEAK) {
> + rdbg(1, (" returning _rtld_sym_zero@_rtld_objmain"));
> def = &_rtld_sym_zero;
> defobj = _rtld_objmain;
> }
If I read this correctly, "ref" was previously uninitialized here in the
name!=NULL case. Is that correct?