gelf_checksum(3elf) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

gelf_checksum(3elf)

gelf(3ELF)                   ELF Library Functions                  gelf(3ELF)



NAME
       gelf,   gelf_checksum,   gelf_fsize,   gelf_getancillary,  gelf_getcap,
       gelf_getchdr, gelf_getclass, gelf_getdyn,  gelf_getehdr,  gelf_getmove,
       gelf_getphdr,  gelf_getrel,  gelf_getrela,  gelf_getshdr,  gelf_getsym,
       gelf_getsyminfo,    gelf_getsymshndx,    gelf_newehdr,    gelf_newphdr,
       gelf_sign_range,         gelf_update_ancillary,        gelf_update_cap,
       gelf_update_dyn,         gelf_update_ehdr,         gelf_update_getmove,
       gelf_update_move,  gelf_update_phdr, gelf_update_rel, gelf_update_rela,
       gelf_update_shdr,        gelf_update_sym,         gelf_update_symshndx,
       gelf_update_syminfo, gelf_xlatetof, gelf_xlatetom - generic class-inde‐
       pendent ELF interface

SYNOPSIS
       cc [ flag... ] file... −lelf [ library... ]
       #include <gelf.h>

       long gelf_checksum(Elf *elf);


       size_t gelf_fsize(Elf *elf, Elf_Type type, size_t cnt, uint_t ver);


       GElf_Ancillary *gelf_getancillary(Elf_Data *src, int ndx,
            GElf_Ancillary *dst);


       int gelf_getcap(Elf_Data *src, int ndx, GElf_Cap *dst);


       GElf_Chdr *gelf_getchdr(Elf_Scn *scn, GElf_Chdr * dst);


       int gelf_getclass(Elf *elf);


       GElf_Dyn *gelf_getdyn(Elf_Data *src, int ndx, GElf_Dyn *dst);


       GElf_Ehdr *gelf_getehdr(Elf *elf, GElf_Ehdr *dst);


       GElf_Move *gelf_getmove(Elf_Data *src, int ndx, GElf_Move *dst);


       GElf_Phdr *gelf_getphdr(Elf *elf, int ndx, GElf_Phdr *dst);


       GElf_Rel *gelf_getrel(Elf_Data *src, int ndx, GElf_Rel *dst);


       GElf_Rela *gelf_getrela(Elf_Data *src, int ndx, GElf_Rela *dst);


       GElf_Shdr *gelf_getshdr(Elf_Scn *scn, GElf_Shdr *dst);


       GElf_Sym *gelf_getsym(Elf_Data *src, int ndx, GElf_Sym *dst);


       GElf_Syminfo *gelf_getsyminfo(Elf_Data *src, int ndx, GElf_Syminfo *dst);


       GElf_Sym *gelf_getsymshndx(Elf_Data *symsrc, Elf_Data *shndxsrc,
            int ndx, GElf_Sym *symdst, Elf32_Word *shndxdst);


       void * gelf_newehdr(Elf *elf, int class);


       void * gelf_newphdr(Elf *elf, size_t phnum);


       int gelf_sign_range(Elf *elf, elf_sign_range_cb_func cb,
            Elf_Signrange type, void *udata);


       int gelf_update_ancillary(Elf_Data *dst, int ndx,
            GElf_Ancillary *src);


       int gelf_update_cap(Elf_Data *dst, int ndx, GElf_Cap *src);


       int gelf_update_dyn(Elf_Data *dst, int ndx, GElf_Dyn *src);


       int gelf_update_ehdr(Elf *elf, GElf_Ehdr *src);


       int gelf_update_move(Elf_Data *dst, int ndx, GElf_Move *src);


       int gelf_update_phdr(Elf *elf, int ndx, GElf_Phdr *src);


       int gelf_update_rel(Elf_Data *dst, int ndx, GElf_Rel *src);


       int gelf_update_rela(Elf_Data *dst, int ndx, GElf_Rela *src);


       int gelf_update_shdr(Elf_Scn *dst, GElf_Shdr *src);


       int gelf_update_sym(Elf_Data *dst, int ndx, GElf_Sym *src);


       int gelf_update_syminfo(Elf_Data *dst, int ndx, GElf_Syminfo *src);


       int gelf_update_symshndx(Elf_Data *symdst, Elf_Data *shndxdst, int ndx,
            GElf_Sym *symsrc, Elf32_Word shndxsrc);


       Elf_Data *gelf_xlatetof(Elf *elf, Elf_Data *dst, const Elf_Data *src,
            uint_t encode);


       Elf_Data *gelf_xlatetom(Elf *elf, Elf_Data *dst, const Elf_Data *src,
            uint_t encode);

DESCRIPTION
       GElf is a generic,  ELF  class-independent  API  for  manipulating  ELF
       object  files.  GElf  provides  a single, common interface for handling
       32-bit and 64-bit ELF format object files. GElf is a translation  layer
       between  the  application  and  the  class-dependent  parts  of the ELF
       library. Thus, the application can use GElf, which in turn,  will  call
       the  corresponding elf32_ or elf64_ functions on behalf of the applica‐
       tion. The data structures returned are all large enough to hold  32-bit
       and 64-bit data.


       GElf provides a simple, class-independent layer of indirection over the
       class-dependent ELF32 and ELF64  API's. GElf is stateless, and  may  be
       used along side the ELF32 and ELF64  API's.


       GElf  always returns a copy of the underlying ELF32 or ELF64 structure,
       and therefore the programming practice of using the address of  an  ELF
       header  as  the base offset for the ELF's mapping into memory should be
       avoided. Also, data accessed by type-casting the Elf_Data buffer  to  a
       class-dependent type and treating it like an array, for example, a sym‐
       bol table, will not work under GElf, and the gelf_get functions must be
       used instead. See the EXAMPLE section.


       Programs  that  create  or  modify ELF files using libelf(3LIB) need to
       perform an extra step when using GElf.  Modifications  to  GElf  values
       must  be explicitly flushed to the underlying ELF32 or ELF64 structures
       by way of the gelf_update_ interfaces. Use of elf_update or elf_flagelf
       and the like remains the same.


       The  sizes  of  versioning structures remain the same between ELF32 and
       ELF64. The GElf  API only defines types for versioning, rather  than  a
       functional  API. The processing of versioning information will stay the
       same in the GElf environment as it was in the class-dependent ELF envi‐
       ronment.

   List of Functions
       gelf_checksum()

           An analog to elf32_checksum(3ELF) and elf64_checksum(3ELF).


       gelf_fsize()

           An analog to elf32_fsize(3ELF) and elf64_fsize(3ELF).


       gelf_getancillary()

           Retrieves  the  Elf32_Ancillary or Elf64_Ancillary information from
           the ancillary table at the given index. dst points to the  location
           where the GElf_Ancillary dynamic entry is stored.


       gelf_getcap()

           Retrieves  the Elf32_Cap or Elf64_Cap information from the capabil‐
           ity table at the given index. dst points to the location where  the
           GElf_Cap capability entry is stored.


       gelf_getchdr()

           An  analog  to  elf32_getchdr(3ELF)  and  elf64_getchdr(3ELF).  dst
           points to the location where the GElf_Chdr header is stored.


       gelf_getclass()

           Returns one of the constants ELFCLASS32,  ELFCLASS64  or  ELFCLASS‐
           NONE.


       gelf_getdyn()

           Retrieves  the  Elf32_Dyn or Elf64_Dyn information from the dynamic
           table at the given index. dst points  to  the  location  where  the
           GElf_Dyn dynamic entry is stored.


       gelf_getehdr()

           An  analog  to  elf32_getehdr(3ELF)  and  elf64_getehdr(3ELF).  dst
           points to the location where the GElf_Ehdr header is stored.


       gelf_getmove()

           Retrieves the Elf32_Move or Elf64_Move information  from  the  move
           table  at  the  given  index.  dst points to the location where the
           GElf_Move move entry is stored.


       gelf_getphdr()

           An  analog  to  elf32_getphdr(3ELF)  and  elf64_getphdr(3ELF).  dst
           points  to  the  location  where  the  GElf_Phdr  program header is
           stored.


       gelf_getrel()

           Retrieves the Elf32_Rel or Elf64_Rel information from  the  reloca‐
           tion table at the given index. dst points to the location where the
           GElf_Rel relocation entry is stored.


       gelf_getrela()

           Retrieves the Elf32_Rela or Elf64_Rela information from the reloca‐
           tion table at the given index. dst points to the location where the
           GElf_Rela relocation entry is stored.


       gelf_getshdr()

           An  analog  to  elf32_getshdr(3ELF)  and  elf64_getshdr(3ELF).  dst
           points  to  the  location  where  the  GElf_Shdr  section header is
           stored.


       gelf_getsym()

           Retrieves the Elf32_Sym or Elf64_Sym information  from  the  symbol
           table  at  the  given  index.  dst points to the location where the
           GElf_Sym symbol entry is stored.


       gelf_getsyminfo()

           Retrieves the Elf32_Syminfo or Elf64_Syminfo information  from  the
           relocation  table  at  the  given index. dst points to the location
           where the GElf_Syminfo symbol information entry is stored.


       gelf_getsymshndx()

           Provides an extension to gelf_getsym() that retrieves the Elf32_Sym
           or Elf64_Sym information, and the section index from the symbol ta‐
           ble at the given index ndx.

           The symbols section index is typically  recorded  in  the  st_shndx
           field  of  the symbols structure. However, a file that requires ELF
           Extended Sections may record an st_shndx of  SHN_XINDEX  indicating
           that  the  section  index  must  be  obtained  from  an  associated
           SHT_SYMTAB_SHNDX section entry. If xshndx and  shndxdata  are  non-
           null, the value recorded at index ndx of the SHT_SYMTAB_SHNDX table
           pointed to by shndxdata is returned in xshndx. See USAGE.


       gelf_newehdr()

           An analog to elf32_newehdr(3ELF) and elf64_newehdr(3ELF).


       gelf_newphdr()

           An analog to elf32_newphdr(3ELF) and elf64_newphdr(3ELF).


       gelf_sign_range()

           An analog to elf32_sign_range(3ELF) and elf64_sign_range(3ELF).


       gelf_update_ancillary()

           Copies the GElf_Ancillary  information  back  into  the  underlying
           Elf32_Ancillary or Elf64_Ancillary structure at the given index.


       gelf_update_cap()

           Copies  the GElf_Cap information back into the underlying Elf32_Cap
           or Elf64_Cap structure at the given index.


       gelf_update_dyn()

           Copies the GElf_Dyn information back into the underlying  Elf32_Dyn
           or Elf64_Dyn structure at the given index.


       gelf_update_ehdr()

           Copies  the contents of the GElf_Ehdr  ELF header to the underlying
           Elf32_Ehdr or Elf64_Ehdr structure.


       gelf_update_move()

           Copies  the  GElf_Move  information  back   into   the   underlying
           Elf32_Move or Elf64_Move structure at the given index.


       gelf_update_phdr()

           Copies  of  the  contents of GElf_Phdr program header to underlying
           the Elf32_Phdr or Elf64_Phdr structure.


       gelf_update_rel()

           Copies the GElf_Rel information back into the underlying  Elf32_Rel
           or Elf64_Rel structure at the given index.


       gelf_update_rela()

           Copies   the   GElf_Rela   information  back  into  the  underlying
           Elf32_Rela or Elf64_Rela structure at the given index.


       gelf_update_shdr()

           Copies of the contents of GElf_Shdr section  header  to  underlying
           the Elf32_Shdr or Elf64_Shdr structure.


       gelf_update_sym()

           Copies  the GElf_Sym information back into the underlying Elf32_Sym
           or Elf64_Sym structure at the given index.


       gelf_update_syminfo()

           Copies  the  GElf_Syminfo  information  back  into  the  underlying
           Elf32_Syminfo or Elf64_Syminfo structure at the given index.


       gelf_update_symshndx()

           Provides an extension to gelf_update_sym() that copies the GElf_Sym
           information back into the Elf32_Sym or Elf64_Sym structure  at  the
           given  index ndx, and copies the extended xshndx section index into
           the Elf32_Word at the given index ndx in the  buffer  described  by
           shndxdata. See USAGE.


       gelf_xlatetof()

           An analog to elf32_xlatetof(3ELF) and elf64_xlatetof(3ELF)


       gelf_xlatetom()

           An analog to elf32_xlatetom(3ELF) and elf64_xlatetom(3ELF)



RETURN VALUES
       Upon  failure,  all  GElf  functions  return  0  and set elf_errno. See
       elf_errno(3ELF)

EXAMPLES
       Example 1 Printing the ELF Symbol Table


         #include <stdio.h>
         #include <sys/types.h>
         #include <sys/stat.h>
         #include <fcntl.h>
         #include <libelf.h>
         #include <gelf.h>

         void
         main(int argc, char **argv)
         {
             Elf         *elf;
             Elf_Scn     *scn = NULL;
             GElf_Shdr   shdr;
             Elf_Data    *data;
             int         fd, ii, count;

             elf_version(EV_CURRENT);

             fd = open(argv[1], O_RDONLY);
             elf = elf_begin(fd, ELF_C_READ, NULL);

             while ((scn = elf_nextscn(elf, scn)) != NULL) {
                 gelf_getshdr(scn, &shdr);
                 if (shdr.sh_type == SHT_SYMTAB) {
                     /* found a symbol table, go print it. */
                     break;
                 }
             }

             data = elf_getdata(scn, NULL);
             count = shdr.sh_size / shdr.sh_entsize;

             /* print the symbol names */
             for (ii = 0; ii < count; ++ii) {
                 GElf_Sym sym;
                 gelf_getsym(data, ii, &sym);
                 printf("%s\n", elf_strptr(elf, shdr.sh_link, sym.st_name));
             }
             elf_end(elf);
             close(fd);
         }


USAGE
       ELF Extended Sections are employed to allow an ELF file to contain more
       than  0xff00 (SHN_LORESERVE) section. See the Oracle Solaris 11.4 Link‐
       ers and Libraries Guide for more information.

FILES
       /lib/libelf.so.1       shared object


       /lib/64/libelf.so.1    64-bit shared object


ATTRIBUTES
       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 _ Interface StabilityCommitted _ MT LevelMT-Safe


SEE ALSO
       elf(3ELF),           elf32_checksum(3ELF),           elf32_fsize(3ELF),
       elf32_getchdr(3ELF),     elf32_getehdr(3ELF),      elf32_getphdr(3ELF),
       elf32_getshdr(3ELF),      elf32_newehdr(3ELF),     elf32_newphdr(3ELF),
       elf32_sign_range(3ELF),   elf32_xlatetof(3ELF),   elf32_xlatetom(3ELF),
       elf_errno(3ELF), libelf(3LIB), attributes(7)


       Oracle Solaris 11.4 Linkers and Libraries Guide



Oracle Solaris 11.4             5 February 2019                     gelf(3ELF)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3