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