Deleted Added
full compact
25c25
< * $FreeBSD: head/libexec/rtld-elf/i386/reloc.c 208256 2010-05-18 08:55:23Z rdivacky $
---
> * $FreeBSD: head/libexec/rtld-elf/i386/reloc.c 216695 2010-12-25 08:51:20Z kib $
73d72
< unsigned long hash;
77,78c76,78
< const Ver_Entry *ve;
< Obj_Entry *srcobj;
---
> const Obj_Entry *srcobj, *defobj;
> SymLook req;
> int res;
83d82
< hash = elf_hash(name);
85c84,85
< ve = fetch_ventry(dstobj, ELF_R_SYM(rel->r_info));
---
> symlook_init(&req, name);
> req.ventry = fetch_ventry(dstobj, ELF_R_SYM(rel->r_info));
87,88c87,91
< for (srcobj = dstobj->next; srcobj != NULL; srcobj = srcobj->next)
< if ((srcsym = symlook_obj(name, hash, srcobj, ve, 0)) != NULL)
---
> for (srcobj = dstobj->next; srcobj != NULL; srcobj = srcobj->next) {
> res = symlook_obj(&req, srcobj);
> if (res == 0) {
> srcsym = req.sym_out;
> defobj = req.defobj_out;
89a93,94
> }
> }
97c102
< srcaddr = (const void *) (srcobj->relocbase + srcsym->st_value);
---
> srcaddr = (const void *) (defobj->relocbase + srcsym->st_value);
117c122
< reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld)
---
> reloc_non_plt(Obj_Entry *obj, Obj_Entry *obj_rtld, RtldLockState *lockstate)
149c154
< false, cache);
---
> false, cache, lockstate);
168c173
< false, cache);
---
> false, cache, lockstate);
198c203
< false, cache);
---
> false, cache, lockstate);
216c221
< false, cache);
---
> false, cache, lockstate);
246c251
< false, cache);
---
> false, cache, lockstate);
260c265
< false, cache);
---
> false, cache, lockstate);
304c309
< reloc_jmpslots(Obj_Entry *obj)
---
> reloc_jmpslots(Obj_Entry *obj, RtldLockState *lockstate)
319c324,325
< def = find_symdef(ELF_R_SYM(rel->r_info), obj, &defobj, true, NULL);
---
> def = find_symdef(ELF_R_SYM(rel->r_info), obj, &defobj, true, NULL,
> lockstate);