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 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.
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.
SEE ALSO
elf(3),
elf_getdata(3),
elf_getscn(3),
gelf(3),
gelf_getsym(3),
gelf_update_sym(3)