OSDN Git Service

Hopefully fix Laszlo and Jacobs dlopen problem.
authorJoakim Tjernlund <joakim.tjernlund@transmode.se>
Wed, 25 Aug 2004 14:22:05 +0000 (14:22 -0000)
committerJoakim Tjernlund <joakim.tjernlund@transmode.se>
Wed, 25 Aug 2004 14:22:05 +0000 (14:22 -0000)
ldso/ldso/ldso.c
ldso/libdl/libdl.c

index bd0b3d8..8730da8 100644 (file)
@@ -139,7 +139,7 @@ void _dl_get_ready_to_run(struct elf_resolve *tpnt, unsigned long load_addr,
                tpnt->ppnt = myppnt = (ElfW(Phdr) *) (load_addr + epnt->e_phoff);
                for (j = 0; j < epnt->e_phnum; j++, myppnt++) {
                        if (myppnt->p_type == PT_DYNAMIC) {
-                               tpnt->dynamic_addr = (ElfW(Dyn) *)myppnt->p_vaddr + load_addr;
+                               tpnt->dynamic_addr = (ElfW(Dyn) *)(myppnt->p_vaddr + load_addr);
                                tpnt->dynamic_size = myppnt->p_filesz;
                        }
                }
index d1274e3..6c4e984 100644 (file)
@@ -179,8 +179,11 @@ void *dlopen(const char *libname, int flag)
        if(_dl_debug)
                fprintf(stderr, "Trying to dlopen '%s'\n", (char*)libname);
 #endif
-       if (!(tpnt = _dl_check_if_named_library_is_loaded((char *)libname, 0)))
+       tpnt = _dl_check_if_named_library_is_loaded((char *)libname, 0);
+       if (!(tpnt))
                tpnt = _dl_load_shared_library(0, &rpnt, tfrom, (char*)libname, 0);
+       else
+               tpnt->usage_count++;
        if (tpnt == NULL) {
                _dl_unmap_cache();
                return NULL;