Hi,

Thanks. Looks like just what I was looking for. I'll probably
iterate through the output and look for my .so's name in
the dlpi_name base.

It would probably be "more accurate" to look for a segment
which contains the current function's address, but that'll
require more investigation of the returned data.

Cheers,

--Amos


On Fri, 25 Feb 2005 12:40:11 +1100, Ian Wienand
<[EMAIL PROTECTED]> wrote:
> On Fri, Feb 25, 2005 at 11:17:48AM +1100, [EMAIL PROTECTED] wrote:
> > Is there a standard way for a .so file to find where it was loaded from?
> 
> from man dl_iterate_phdr
> 
>   The info argument is a structure of the following type:
> 
>          struct dl_phdr_info {
>            ElfW(Addr)        dlpi_addr;  /* Base address of object */
>            const char       *dlpi_name;  /* (Null-terminated) name of
>                                             object
>            const ElfW(Phdr) *dlpi_phdr;  /* Pointer to array of
>                                             ELF program headers
>                                             for this object */
>            ElfW(Half)        dlpi_phnum; /* # of items in 'dlpi_phdr' */
>          };
> 
>   The dlpi_name field is a null-terminated string giving the path-name
>   from which the shared object was loaded.
> 
> -i
> [EMAIL PROTECTED]
> http://www.gelato.unsw.edu.au
> 
> 
>
-- 
SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/
Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html

Reply via email to