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