dladdr(3c) 맨 페이지 - 윈디하나의 솔라나라


맨 페이지 이름


Standard C Library Functions                                        dladdr(3C)

       dladdr, dladdr1 - translate address to symbolic information

       #include <dlfcn.h>

       int dladdr(void *address, Dl_info_t *dlip);

       int dladdr1(void *address, Dl_info_t *dlip, void **info,
           int flags);

       The dladdr() and dladdr1() functions determine if the specified address
       is located within one of the mapped objects that make  up  the  current
       applications  address  space.  An  address  is  deemed to fall within a
       mapped object when it is between the base address, and the _end address
       of  that  object. See NOTES. If a mapped object fits this criteria, the
       symbol table made available to the runtime linker is searched to locate
       the  nearest symbol to the specified address. The nearest symbol is one
       that has a value less than or equal to the required address.

       The Dl_info_t structure must be preallocated by the user. The structure
       members  are filled in by dladdr(), based on the specified address. The
       Dl_info_t structure includes the following members:

             const char    *dli_fname;
             void          *dli_fbase;
             const char    *dli_sname;
             void          *dli_saddr;

       The Dl_info_t members provide the following information.


           Contains a pointer to the filename of the containing object.


           Contains the base address of the containing object.


           Contains a pointer to the symbol name that is nearest to the speci‐
           fied  address. This symbol either represents the exact address that
           was specified, or is the nearest symbol with a lower address.


           Contains the actual address of the symbol pointed to by dli_sname.

       The dladdr1() function provides for addition information to be returned
       as specified by the flags argument:


           Obtain  the ELF symbol table entry for the matched symbol. The info
           argument points to a  symbol  pointer  as  defined  in  <sys/elf.h>
           (Elf32_Sym  **info  or  Elf64_Sym  **info). Most of the information
           found in an ELF symbol can only be properly interpreted by the run‐
           time linker. However, there are two fields that contain information
           useful to the caller of dladdr1(): The st_size field  contains  the
           size of the referenced item. The st_info field provides symbol type
           and  binding  attributes.  See  Oracle  Solaris  11.4  Linkers  and
           Libraries Guide for more information.


           Obtain  the Link_map for the matched file. The info argument points
           to a Link_map pointer as defined in <sys/link.h> (Link_map **info).

       If the specified address cannot be matched to a mapped object, a  0  is
       returned.  Otherwise,  a  non-zero  return  is  made and the associated
       Dl_info_t elements are filled.

       The dladdr() and dladdr1() functions are one of a family  of  functions
       that  give  the  user  direct access to the dynamic linking facilities.
       These facilities are available to  dynamically-linked  processes  only.
       See Oracle Solaris 11.4 Linkers and Libraries Guide.

       See attributes(7) for descriptions of the following attributes:

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ MT-LevelMT-Safe

       dlopen(3C), ld(1),  dlclose(3C),  dldump(3C),  dlerror(3C),  dlsym(3C),

       Oracle Solaris 11.4 Linkers and Libraries Guide

       The  Dl_info_t  pointer  elements  point to addresses within the mapped
       objects. These pointers can become invalid if objects are removed prior
       to these elements use. See dlclose(3C).

       If  no  symbol  is  found  to  describe the specified address, both the
       dli_sname and dli_saddr members are set to 0.

       If the address specified exists within a mapped  object  in  the  range
       between  the base address and the address of the first global symbol in
       the object, the reserved local symbol _START_ is returned. This  symbol
       acts  as  a  label  representing  the  start of the mapped object. As a
       label, this symbol has no size. The dli_saddr member is set to the base
       address  of  the  associated object. The dli_sname member is set to the
       symbol name _START_. If the flag argument  is  set  to  RTLD_DL_SYMENT,
       symbol information for _START_ is returned.

       If  an  object  is acting as a filter, care should be taken when inter‐
       preting the address of any symbol  obtained  using  a  handle  to  this
       object. For example, using dlsym(3C) to obtain the symbol _end for this
       object, results in returning the address of the symbol _end within  the
       filtee,  not  the  filter.  For  more information on filters see Shared
       Objects as Filters in Oracle Solaris 11.4 Linkers and Libraries Guide.

Oracle Solaris 11.4              23 April 2014                      dladdr(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.