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