From 2e3a6e76fcc56433a09b700985714393de02da5e Mon Sep 17 00:00:00 2001 From: Joakim Tjernlund Date: Fri, 17 Sep 2004 15:57:21 +0000 Subject: Added back dl_iterate_phdr in ldso(with some small changes). Someone needs to test if it works to build and run gcj. --- ldso/ldso/dl-elf.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'ldso') diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c index e11cb0d92..c58ca5dfb 100644 --- a/ldso/ldso/dl-elf.c +++ b/ldso/ldso/dl-elf.c @@ -894,4 +894,26 @@ char *_dl_strdup(const char *string) _dl_strcpy(retval, string); return retval; } - +#ifdef __USE_GNU +#if ! defined LIBDL || (! defined PIC && ! defined __PIC__) +int +__dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, size_t size, void *data), void *data) +{ + struct elf_resolve *l; + struct dl_phdr_info info; + int ret = 0; + + for (l = _dl_loaded_modules; l != NULL; l = l->next) { + info.dlpi_addr = l->loadaddr; + info.dlpi_name = l->libname; + info.dlpi_phdr = l->ppnt; + info.dlpi_phnum = l->n_phent; + ret = callback (&info, sizeof (struct dl_phdr_info), data); + if (ret) + break; + } + return ret; +} +strong_alias(__dl_iterate_phdr, dl_iterate_phdr); +#endif +#endif -- cgit v1.2.3