[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