Date: Thu, 19 Dec 2002 15:20:17 +0300 From: Lev Serebryakov <lev@serebryakov.spb.ru> To: Ferruccio Vitale <freebsd@cs.tin.it>, hackers@freebsd.org Subject: Re[2]: dlinfo() from sunOS, _DYNAMIC from Linux: did we have something like this? Message-ID: <165246107764.20021219152017@serebryakov.spb.ru> In-Reply-To: <20021219120240.48ac3416.freebsd@cs.tin.it> References: <45792625.20021218000337@serebryakov.spb.ru> <20021219120240.48ac3416.freebsd@cs.tin.it>
next in thread | previous in thread | raw e-mail | index | archive | help
Hello Ferruccio, Thursday, December 19, 2002, 2:02:40 PM, you wrote: >> Here is very good profiler (IMHO, better than `gcc -g' + `gprof'): >> FunctionCheck. But it need information about each module in program. >> It uses dlinfo() function on SunOS and _DYNAMIC variable on Linux to >> access all ELF symbol tables in loaded program. Did FreeBSD (4.x) >> have something like this? FV> try 'dladdr'. Unfortunately, it is not solution. Here is code, which uses dlinfo()/_DYNAMIC, and I could not understand, how could dladdr() be used here: /* try to find out about dynamically loaded objects */ #if HAVE_DECL__DYNAMIC == 1 dyn = _DYNAMIC; #else dlinfo(RTLD_SELF, RTLD_DI_LINKMAP, &lm); #if HAVE_ELF32_DYN_ == 1 dyn = (Elf32_Dyn*)lm->l_ld; #elif HAVE_ELF64_DYN_ == 1 dyn = (Elf64_Dyn*)lm->l_ld; #else dyn = NULL; #endif #endif if (dyn != NULL) { for (; dyn->d_tag != DT_NULL; dyn++) { if (dyn->d_tag == DT_DEBUG) { rdb = (struct r_debug *)dyn->d_un.d_ptr; break; } } } -- Best regards, Lev mailto:lev@serebryakov.spb.ru To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?165246107764.20021219152017>