cvs commit: src/libexec/rtld-elf rtld.c src/usr.bin/kdump
kdump.c
John Baldwin
jhb at freebsd.org
Tue Jan 9 19:46:19 UTC 2007
On Tuesday 09 January 2007 12:50, John Baldwin wrote:
> jhb 2007-01-09 17:50:05 UTC
>
> FreeBSD src repository
>
> Modified files:
> libexec/rtld-elf rtld.c
> usr.bin/kdump kdump.c
> Log:
> Add various utrace's for use with ktrace to the ELF runtime linker. To
> activate the traces, set the LD_UTRACE (or LD_32_UTRACE) environment
> variable. This also includes code in kdump(8) to parse the traces.
>
> Reviewed by: kan, jdp
> MFC after: 2 weeks
Some sample output:
-bash-2.05b$ cat foo.c
#include <dlfcn.h>
#include <err.h>
int
main(int ac, char **av)
{
void *p;
p = dlopen("libpcap.so.4", RTLD_NOW);
if (p == 0)
errx(1, "dlopen: %s", dlerror());
dlclose(p);
}
-bash-2.05b$ env LD_UTRACE=yes LD_PRELOAD=libm.so.2 ktrace ./foo
-bash-2.05b$ kdump -t u
17266 foo USER RTLD: loaded 0x800529200 @ 0x800633000 - 0x800754fff (/usr/lib/compat/libm.so.2)
17266 foo USER RTLD: LD_PRELOAD finished
17266 foo USER RTLD: loaded 0x800529400 @ 0x800755000 - 0x80096cfff (/lib/libc.so.6)
17266 foo USER RTLD: init 0x8006362c0 for 0x800529200 (/usr/lib/compat/libm.so.2)
17266 foo USER RTLD: init 0x80077e568 for 0x800529400 (/lib/libc.so.6)
17266 foo USER dlopen(libpcap.so.4, RTLD_NOW)
17266 foo USER RTLD: loaded 0x800529600 @ 0x80096d000 - 0x800a96fff (/lib/libpcap.so.4)
17266 foo USER 0x800529600 = dlopen(libpcap.so.4) ref 1
17266 foo USER RTLD: init 0x800971b70 for 0x800529600 (/lib/libpcap.so.4)
17266 foo USER dlclose(0x800529600) (/lib/libpcap.so.4, 1)
17266 foo USER RTLD: fini 0x8009840b4 for 0x800529600 (/lib/libpcap.so.4)
17266 foo USER RTLD: unloaded 0x800529600 @ 0x80096d000 - 0x800a96fff (/lib/libpcap.so.4)
17266 foo USER dlclose(0x800529600) finished
17266 foo USER RTLD: fini 0x80082cdf4 for 0x800529400 (/lib/libc.so.6)
17266 foo USER RTLD: fini 0x80064a1a4 for 0x800529200 (/usr/lib/compat/libm.so.2)
--
John Baldwin
More information about the cvs-src
mailing list