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 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)

November 5, 2006 | NetBSD 9.2