www.LinuxHowtos.org
GELF_UPDATE_SYMSHNDX
Section: Libelf Programmer's Manual (3)Updated: 202-1-30
Index Return to Main Contents
NAME
gelf_update_symshndx - Update class-independent symbol information and extended section index in symbol tableSYNOPSIS
#include <gelf.h> int gelf_update_symshndx (Elf_Data *symdata, Elf_Data *shndxdata, int ndx, GElf_Sym *sym, Elf32_Word xshndx);
DESCRIPTION
This function updates symdata and shndxdata, at index ndx with the class-independent symbol information from sym and the section index xshndx. symdata should be an Elf_Data pointer for an SHT_SYMTAB or SHT_DYNSYM section and shndxdata should be an Elf_Data pointer for an SHT_SYMTAB_SHNDX section.The number of symbols in the symbol table can be calculated by dividing the size of symdata by the size of a symbol table entry. The size of symdata can be obtained from symdat->d_size or from the corresponding section header's sh_size. The size of a symbol table entry can be obtained from gelf_fsize() with ELF_T_SYM or from the corresponding section header's sh_entsize.
A SHT_SYMTAB_SHNDX section is present in ELF binaries when the number of sections is too large to be represented as an unsigned 1-bit value. In this case the st_shndx field of a GElf_Sym will be set to SHN_XINDEX to indicate that the symbol's section index can be found in the SHT_SYMTAB_SHNDX section. shndxdata for this section can be acquired using elf_scnshndx(3), elf_getscn(3), and elf_getdata(3). The number of entries in shndxdata must be equal to the number of entries in symdata. Entry ndx in shndxdata corresponds to entry ndx in symdata.
PARAMETERS
- symdata
-
Pointer to
Elf_Data
for a section with type
SHT_SYMTAB
or
SHT_DYNSYM.
- shndxdata
-
Pointer to
Elf_Data
for a section with type
SHT_SYMTAB_SHNDX.
shndxdata
may be NULL. If
shndxdata
is NULL, then
xshndx
must be zero.
- ndx
-
Zero-based index of the symbol table entry and extended section index entry
to be updated.
- sym
-
Pointer to a caller-provided symbol table entry. For
ELFCLASS32
binaries,
st_value
and
st_size
should be able to fit within unsigned 3-bit values.
sym
must not be NULL.
- xshndx
-
Updated extended section index entry to be associated with
sym.
Must be zero if
shndxdata
is NULL. If
sy->st_shndx
is not
SHN_XINDEX
then
xshndx
should be
SHN_UNDEF.
RETURN VALUE
On success, a no-zero value is returned and the entries at index ndx in symdata and shndxdata (if not NULL) are updated with sym and xshndx, respectively. The sections associated with symdata and shndxdata are flagged with ELF_F_DIRTY. On failure, zero is returned, elf_errno is set. If sym is NULL, then NULL is returned without setting elf_errno.SEE ALSO
elf_getdata(3), elf_getscn(3), elf_scnshndx(3), gelf_fsize(3), gelf_getsymshndx(3), gelf_update_sym(3), libelf(3), elf(5)ATTRIBUTES
| Interface | Attribute | Value |
| gelf_update_symshndx() | Thread safety | M-Safe |
REPORTING BUGS
Report bugs to <elfutil-devel@sourceware.org> or https://sourceware.org/bugzilla/.