[uClibc-cvs] CVS uClibc/ldso/ldso/mips
CVS User jocke
jocke at codepoet.org
Wed Nov 10 15:27:19 UTC 2004
Update of /var/cvs/uClibc/ldso/ldso/mips
In directory nail:/tmp/cvs-serv473/ldso/mips
Modified Files:
elfinterp.c
Log Message:
Add RTLD_LOCAL support for dlopened libs. Reported by
Andrew de Quincey, who has been most helpful getting this sorted
out, thanks. Thanks also to Peter Mazinger who did alot of testing.
Removed all traces of dl_parse_copy_information() since it is no longer used.
--- /var/cvs/uClibc/ldso/ldso/mips/elfinterp.c 2004/11/02 08:14:47 1.23
+++ /var/cvs/uClibc/ldso/ldso/mips/elfinterp.c 2004/11/10 15:27:18 1.24
@@ -129,7 +129,7 @@
symname = strtab + sym->st_name;
new_addr = (unsigned long) _dl_find_hash(symname,
- tpnt->symbol_scope, ELF_RTYPE_CLASS_PLT);
+ tpnt->symbol_scope, tpnt, ELF_RTYPE_CLASS_PLT);
if (unlikely(!new_addr)) {
_dl_dprintf (2, "%s: can't resolve symbol '%s'\n",
_dl_progname, symname);
@@ -164,14 +164,6 @@
return;
}
-int _dl_parse_copy_information(struct dyn_elf *rpnt,
- unsigned long rel_addr, unsigned long rel_size)
-{
- /* Nothing to do */
- return 0;
-}
-
-
int _dl_parse_relocation_information(struct dyn_elf *xpnt,
unsigned long rel_addr, unsigned long rel_size)
{
@@ -290,12 +282,12 @@
}
else {
*got_entry = (unsigned long) _dl_find_hash(strtab +
- sym->st_name, tpnt->symbol_scope, ELF_RTYPE_CLASS_PLT);
+ sym->st_name, tpnt->symbol_scope, tpnt, ELF_RTYPE_CLASS_PLT);
}
}
else if (sym->st_shndx == SHN_COMMON) {
*got_entry = (unsigned long) _dl_find_hash(strtab +
- sym->st_name, tpnt->symbol_scope, ELF_RTYPE_CLASS_PLT);
+ sym->st_name, tpnt->symbol_scope, tpnt, ELF_RTYPE_CLASS_PLT);
}
else if (ELF32_ST_TYPE(sym->st_info) == STT_FUNC &&
*got_entry != sym->st_value) {
@@ -307,7 +299,7 @@
}
else {
*got_entry = (unsigned long) _dl_find_hash(strtab +
- sym->st_name, tpnt->symbol_scope, ELF_RTYPE_CLASS_PLT);
+ sym->st_name, tpnt->symbol_scope, tpnt, ELF_RTYPE_CLASS_PLT);
}
got_entry++;
More information about the uClibc-cvs
mailing list