summaryrefslogtreecommitdiff
path: root/ldso/ldso/sparc
diff options
context:
space:
mode:
authorJoakim Tjernlund <joakim.tjernlund@transmode.se>2004-08-17 13:37:54 +0000
committerJoakim Tjernlund <joakim.tjernlund@transmode.se>2004-08-17 13:37:54 +0000
commit6d6f3a5c26adcf6b105edfb4b53e97ceee81944c (patch)
treefdf250e80080d49b1e421f7157661033821c5fb7 /ldso/ldso/sparc
parentd965f80088fafaacfd33d0b0770724f4fbcbe6e5 (diff)
Let ldso decide if it should relocate itselft a second time. This
is needed if ldso should use libcs malloc whenever possible. Fix RTLD_LAZY propagation to RTLD_NOW relocation when requested by libdl.
Diffstat (limited to 'ldso/ldso/sparc')
-rw-r--r--ldso/ldso/sparc/elfinterp.c19
1 files changed, 0 insertions, 19 deletions
diff --git a/ldso/ldso/sparc/elfinterp.c b/ldso/ldso/sparc/elfinterp.c
index 98435cbd4..44d889ff2 100644
--- a/ldso/ldso/sparc/elfinterp.c
+++ b/ldso/ldso/sparc/elfinterp.c
@@ -169,13 +169,6 @@ void _dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
reloc_type = ELF32_R_TYPE(rpnt->r_info);
symtab_index = ELF32_R_SYM(rpnt->r_info);
- /* When the dynamic linker bootstrapped itself, it resolved some symbols.
- Make sure we do not do them again */
- if(!symtab_index && tpnt->libtype == program_interpreter) continue;
- if(symtab_index && tpnt->libtype == program_interpreter &&
- _dl_symbol(strtab + symtab[symtab_index].st_name))
- continue;
-
switch(reloc_type){
case R_SPARC_NONE:
break;
@@ -219,14 +212,8 @@ int _dl_parse_relocation_information(struct dyn_elf *rpnt,
symtab_index = ELF32_R_SYM(rpnt->r_info);
symbol_addr = 0;
- if(!symtab_index && tpnt->libtype == program_interpreter) continue;
-
if(symtab_index) {
- if(tpnt->libtype == program_interpreter &&
- _dl_symbol(strtab + symtab[symtab_index].st_name))
- continue;
-
symbol_addr = (unsigned int)
_dl_find_hash(strtab + symtab[symtab_index].st_name,
tpnt->symbol_scope, elf_machine_type_class(reloc_type));
@@ -337,13 +324,7 @@ int _dl_parse_copy_information(struct dyn_elf *xpnt,
if(reloc_type != R_SPARC_COPY) continue;
symtab_index = ELF32_R_SYM(rpnt->r_info);
symbol_addr = 0;
- if(!symtab_index && tpnt->libtype == program_interpreter) continue;
if(symtab_index) {
-
- if(tpnt->libtype == program_interpreter &&
- _dl_symbol(strtab + symtab[symtab_index].st_name))
- continue;
-
symbol_addr = (unsigned int)
_dl_find_hash(strtab + symtab[symtab_index].st_name,
xpnt->next, ELF_RTYPE_CLASS_COPY);