NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: problem using dladdr API in NetBSD
In article
<515c64960810092215y19d00664nf201170263dd3e64%mail.gmail.com@localhost>,
Channa <channa.kad%gmail.com@localhost> wrote:
>Hi All,
>I am executing the following test case on NetBSD 3.1 to check the
>functionality of dladdr ()
>
>int main () {
> void *handle;
> int (*sym) (void);
> Dl_info info;
> int ret;
> int test_fail=0;
> handle = dlopen (LIB_NAME , RTLD_NOW);
> if (handle == NULL) {
> printf("Dlopen failed\n");
> return -1
> }
> sym = dlsym (handle, SYM_NAME);
> if (sym == NULL) {
> printf("Dlsym failed\n");
> return -1;
> }
> memset (&info, 0, sizeof (info));
> ret = dladdr (sym, &info);
> printf ("address of symbol : %s = %lx\n", SYM_NAME,sym);
> printf ("info.dli_fname = %p (\"%s\")\n", info.dli_fname, info.dli_fname);
> printf ("info.dli_fbase = %p\n", info.dli_fbase);
> printf ("info.dli_sname = %p (\"%s\")\n", info.dli_sname, info.dli_sname);
> printf ("info.dli_saddr = %p\n", info.dli_saddr);
> dlclose (handle);
>}
>
>I am always getting the info.dli_sname as NULL string.
>dladdr is not able to find the symbol.
>On checking the code in rtld.c
>
>Line No:792 for (symoffset = 0; symoffset < obj->nchains; symoffset++) {
> ........
> ..........
> }
>
>The dladdr is not entering this loop, sicne obj->nchains is 0 always.
>
>Can anyone tell me what is the problem??
>Any help will be greatly appreciated.
Dunno, works for me on
NetBSD rebar.astron.com 4.99.1 NetBSD 4.99.1 (ASTRON) #2: Fri Sep 8 15:10:53
EDT 2006
christos%rebar.astron.com@localhost:/usr/src/sys/arch/i386/compile/ASTRON i386
address of symbol : printf = 0xbbbac360
info.dli_fname = 0xbbbee0c0 ("/usr/lib/libc.so.12")
info.dli_fbase = 0xbbb0f000
info.dli_sname = 0xbbb206ad ("printf")
info.dli_saddr = 0xbbbac360
christos
Home |
Main Index |
Thread Index |
Old Index