Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ elf_strptr(3E) — IRIX 6.5.3f

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

elf(3E)



ELFSTRPTR(3E)                                                  ELFSTRPTR(3E)



NAME
     elfstrptr - make a string pointer

SYNOPSIS
     cc [flag ...] file ...  -lelf [library ...]

     #include <libelf.h>

char *elfstrptr(Elf *elf, sizet section, sizet offset);
#define LIBELFXTND64 char *elfstrptr(Elf *elf, Elf64Xword section, Elf64Xword sizet offset); DESCRIPTION This function converts a string section offset to a string pointer. elf identifies the file in which the string section resides, and section gives the section table index for the strings. elfstrptr normally returns a pointer to a string, but it returns a null pointer when elf is null, section is invalid or is not a section of type SHTSTRTAB, the section data cannot be obtained, offset is invalid, or an error occurs. EXAMPLE A prototype for retrieving section names appears below. The file header specifies the section name string table in the eshstrndx member. The following code loops through the sections, printing their names. if ((ehdr = elf32getehdr(elf)) == 0) { /* handle the error */ return; } ndx = ehdr->eshstrndx; scn = 0; while ((scn = elfnextscn(elf, scn)) != 0) { char *name = 0; if ((shdr = elf32getshdr(scn)) != 0) name = elfstrptr(elf, ndx, (sizet)shdr->shname); printf("'%s'\n", name? name: "(null)"); } SEE ALSO elf(3E), elfgetdata(3E), elfgetshdr(3E), elfxlate(3E). NOTE A program may call elfgetdata to retrieve an entire string table section. For some applications, that would be both more efficient and more convenient than using elfstrptr. The use of a sizet in a 32-bit compile with elfstrptr is unfortunate, since that makes it impossible to deal with certain object files. If, when the 32-bit app is compiled, _LIBELF_XTND_64 is defined, then the function interface changes to have 64-bit fields. If LIBELFXTND64 is Page 1


ELFSTRPTR(3E)                                                  ELFSTRPTR(3E)



     defined at compile-time, then instead of linking with -lelf, link with
     -lelf_xtnd.  There is a corresponding -ldwarfxtnd.  It is essential that
     a 32-bit application compiled with _LIBELF_XTND_64 be *entirely* compiled
     with LIBELFXTND64 defined.

     Applications which are built as 64-bit applications can ignore
     _LIBELF_XTND_64: it has no effect on them and 64-bit applications always
     link with -lelf never with -lelf_xtnd.















































                                                                        Page 2



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026