gelf_getsymshndx
,
gelf_update_symshndx
—
read and update symbol information using extended section
indices
ELF Access Library (libelf, -lelf)
#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);
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 in
class-independent form in argument sym. In addition it
retrieves the extended section index for the symbol from data buffer
xndxdata and stores it into the location pointed to by
argument xndxptr.
Function gelf_update_symshndx
() updates
the underlying symbol table entry in 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.
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.
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.