[uClibc] getting _dl_loaded_modules

Rogelio M.Serrano Jr. rogelio at smsglobal.net
Tue Nov 4 18:55:34 UTC 2003


Im trying to implement dl_iterate_phdr. how do i access 
_dl_loaded_modules? im cant link because of a missing
_dl_loaded_modules. i attched<dl-iteratephdr.c>
-------------- next part --------------
#include <link.h>
#include <stddef.h>

static void __attribute__ ((unused)) foobar(void)
{
        const char msg[]="libdl library not correctly linked\n";
        _dl_write(2, msg, _dl_strlen(msg));
        _dl_exit(1);
}

extern struct elf_resolve *_dl_loaded_modules __attribute__ ((__weak__, __alias__ ("foobar1")));

struct dl_phdr_info
  {
    ElfW(Addr) dlpi_addr;
    const char *dlpi_name;
    const ElfW(Phdr) *dlpi_phdr;
    ElfW(Half) dlpi_phnum;
  };

int
dl_iterate_phdr(int (*callback) (struct dl_phdr_info *info, size_t size, void* data), void * data)
{
    struct link_map *l;
    struct dl_phdr_info info;
    int ret = 0; 
    
    for (l = (struct link_map *) _dl_loaded_modules; l != NULL; l = l->l_next)
    {
        if (l->l_phdr == NULL)
            continue;
        info.dlpi_addr = l->l_addr;
        info.dlpi_name = l->l_name;
        info.dlpi_phdr = l->l_phdr;
        info.dlpi_phnum = l->l_phnum;
        ret = callback(&info, sizeof(struct dl_phdr_info), data);
        if (ret)
            break;
    }
    return ret;
}


More information about the uClibc mailing list