Updated: 2021/Apr/14


GELF_GETSYMSHNDX(3)        Library Functions Manual        GELF_GETSYMSHNDX(3)

NAME
     gelf_getsymshndx, gelf_update_symshndx - read and update symbol
     information using extended section indices

LIBRARY
     ELF Access Library (libelf, -lelf)

SYNOPSIS
     #include <gelf.h>

     GElf_Sym *
     gelf_getsymshndx(Elf_Data *symdata, Elf_Data *xndxdata, int ndx,
         GElf_Sym *sym, Elf32_Word *xndxptr);

     int
     gelf_update_symshndx(Elf_Data *symdata, Elf_Data *xndxdata, int ndx,
         GElf_Sym *sym, Elf32_Word xndx);

DESCRIPTION
     These functions are analogous to gelf_getsym() and gelf_update_sym()
     respectively, but are capable of handling symbol tables using extended
     section numbering.

     Argument symdata is an Elf_Data descriptor associated with a section of
     type SHT_SYMTAB.  Argument xndxdata is an Elf_Data descriptor associated
     with a section of type SHT_SYMTAB_SHNDX.  Argument ndx is the index of
     the symbol table entry being retrieved or updated.  Argument sym is a
     pointer to a class-independent GElf_Sym structure.  GElf_Sym structures
     are described in detail in gelf(3).

     Function gelf_getsymshndx() retrieves symbol information at index ndx
     from the data descriptor specified by argument symdata and stores it in
     class-independent form in argument sym.  Additionally:

        If the arguments xndxdata and xndxptr are both not NULL, it retrieves
         the extended section index for the symbol from the data buffer
         pointed to by the argument xndxdata and stores it into the location
         pointed to by argument xndxptr.

        Otherwise, if the argument xndxptr is not NULL, a value of zero is
         stored into the location pointed to by argument xndxptr.

     Function gelf_update_symshndx() updates the underlying symbol table entry
     in the data descriptor symdata with the information in argument sym.  In
     addition it sets the extended section index in data buffer xndxdata to
     the value of argument xndx.

RETURN VALUES
     Function gelf_getsymshndx() returns the value of argument sym if
     successful, or NULL in case of an error.

     Function gelf_update_symshndx() returns a non-zero value if successful,
     or zero in case of an error.

ERRORS
     These functions may fail with the following errors:

     [ELF_E_ARGUMENT]  Arguments symdata, xndxdata, xndxptr or sym were NULL.

     [ELF_E_ARGUMENT]  Argument ndx was less than zero, or too large for
                       either of descriptors symdata or xndxdata.

     [ELF_E_ARGUMENT]  Data descriptor symdata was not associated with a
                       section of type SHT_SYMTAB.

     [ELF_E_ARGUMENT]  Data descriptor xndxdata was not associated with a
                       section of type SHT_SYMTAB_SHNDX.

     [ELF_E_ARGUMENT]  Data descriptor symdata and xndxdata were associated
                       with different ELF objects.

     [ELF_E_VERSION]   The Elf_Data descriptors denoted by arguments symdata
                       and xndxdata are associated with an ELF object with an
                       unsupported version.

SEE ALSO
     elf(3), elf_getdata(3), elf_getscn(3), gelf(3), gelf_getsym(3),
     gelf_update_sym(3)

NetBSD 9.99                   September 26, 2020                   NetBSD 9.99