/* * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. */ /* LINTLIBRARY */ /* PROTOLIB1 */ /* * Generic interface definition for usr/src/lib/libelf. */ #include <_libelf.h> #include #include /* * Elf32 Symbols */ size_t elf32_fsize(Elf_Type, size_t, uint_t); Elf32_Ehdr *elf32_getehdr(Elf *); Elf32_Phdr *elf32_getphdr(Elf *); Elf32_Shdr *elf32_getshdr(Elf_Scn *); Elf32_Ehdr *elf32_newehdr(Elf *); Elf32_Phdr *elf32_newphdr(Elf *, size_t); Elf_Data *elf32_xlatetof(Elf_Data *, const Elf_Data *, uint_t); Elf_Data *elf32_xlatetom(Elf_Data *, const Elf_Data *, uint_t); /* * Elf64 Symbols */ size_t elf64_fsize(Elf_Type, size_t, uint_t); Elf64_Ehdr *elf64_getehdr(Elf *); Elf64_Phdr *elf64_getphdr(Elf *); Elf64_Shdr *elf64_getshdr(Elf_Scn *); Elf64_Ehdr *elf64_newehdr(Elf *); Elf64_Phdr *elf64_newphdr(Elf *, size_t); Elf_Data *elf64_xlatetof(Elf_Data *, const Elf_Data *, uint_t); Elf_Data *elf64_xlatetom(Elf_Data *, const Elf_Data *, uint_t); /* * GElf Symbols */ size_t gelf_fsize(Elf *, Elf_Type, size_t, uint_t); int gelf_getclass(Elf *); GElf_Ehdr *gelf_getehdr(Elf *, GElf_Ehdr *); int gelf_update_ehdr(Elf *, GElf_Ehdr *); ulong_t gelf_newehdr(Elf *, int); GElf_Phdr *gelf_getphdr(Elf *, int, GElf_Phdr *); int gelf_update_phdr(Elf *, int, GElf_Phdr *); ulong_t gelf_newphdr(Elf *, size_t); GElf_Shdr *gelf_getshdr(Elf_Scn *, GElf_Shdr *); int gelf_update_shdr(Elf_Scn *, GElf_Shdr *); Elf_Data *gelf_xlatetof(Elf *, Elf_Data *, const Elf_Data *, uint_t); Elf_Data *gelf_xlatetom(Elf *, Elf_Data *, const Elf_Data *, uint_t); GElf_Sym *gelf_getsym(Elf_Data *, int, GElf_Sym *); int gelf_update_sym(Elf_Data *, int, GElf_Sym *); GElf_Syminfo *gelf_getsyminfo(Elf_Data *, int, GElf_Syminfo *); int gelf_update_syminfo(Elf_Data *, int, GElf_Syminfo *); GElf_Sym *gelf_getsymshndx(Elf_Data *, Elf_Data *, int, GElf_Sym *, Elf32_Word *); int gelf_update_symshndx(Elf_Data *, Elf_Data *, int, GElf_Sym *, Elf32_Word); GElf_Move *gelf_getmove(Elf_Data *, int, GElf_Move *); int gelf_update_move(Elf_Data *, int, GElf_Move *); GElf_Dyn *gelf_getdyn(Elf_Data *, int, GElf_Dyn *); int gelf_update_dyn(Elf_Data *, int, GElf_Dyn *); GElf_Rela *gelf_getrela(Elf_Data *, int, GElf_Rela *); int gelf_update_rela(Elf_Data *, int, GElf_Rela *); GElf_Rel *gelf_getrel(Elf_Data *, int, GElf_Rel *); int gelf_update_rel(Elf_Data *, int, GElf_Rel *); GElf_Cap *gelf_getcap(Elf_Data *, int, GElf_Cap *); int gelf_update_cap(Elf_Data *, int, GElf_Cap *); /* * Class-Independent Elf Symbols */ Elf *elf_begin(int, Elf_Cmd, Elf *); int elf_cntl(Elf *, Elf_Cmd); int elf_end(Elf *); const char *elf_errmsg(int); int elf_errno(void); void elf_fill(int); uint_t elf_flagdata(Elf_Data *, Elf_Cmd, uint_t); uint_t elf_flagehdr(Elf *, Elf_Cmd, uint_t); uint_t elf_flagelf(Elf *, Elf_Cmd, uint_t); uint_t elf_flagphdr(Elf *, Elf_Cmd, uint_t); uint_t elf_flagscn(Elf_Scn *, Elf_Cmd, uint_t); uint_t elf_flagshdr(Elf_Scn *, Elf_Cmd, uint_t); Elf_Arhdr *elf_getarhdr(Elf *); Elf_Arsym *elf_getarsym(Elf *, size_t *); off_t elf_getbase(Elf *); Elf_Data *elf_getdata(Elf_Scn *, Elf_Data *); char *elf_getident(Elf *, size_t *); int elf_getphnum(Elf *, size_t *); int elf_getshnum(Elf *, size_t *); int elf_getshstrndx(Elf *, size_t *); Elf_Scn *elf_getscn(Elf *elf, size_t); ulong_t elf_hash(const char *); Elf_Kind elf_kind(Elf *); Elf *elf_memory(char *, size_t); size_t elf_ndxscn(Elf_Scn *); Elf_Data *elf_newdata(Elf_Scn *); Elf_Scn *elf_newscn(Elf *); Elf_Cmd elf_next(Elf *); Elf_Scn *elf_nextscn(Elf *, Elf_Scn *); size_t elf_rand(Elf *, size_t); Elf_Data *elf_rawdata(Elf_Scn *, Elf_Data *); char *elf_rawfile(Elf *, size_t *); char *elf_strptr(Elf *, size_t, size_t); off_t elf_update(Elf *, Elf_Cmd); uint_t elf_version(uint_t); int nlist(const char *, struct nlist *); /* * Private Symbols */ void _elf_execfill(_elf_execfill_func_t *); elf_file_t _elf_file(const char *, const char *, int, elf_file_ar_t style, int, const char *, size_t); off_t _elf_getarhdrbase(Elf *); size_t _elf_getarsymwordsize(Elf *); size_t _elf_getnextoff(Elf *); Elf64_Off _elf_getxoff(Elf_Data *); void _elf_set_memalloc(libelf_malloc_func_t *, libelf_free_func_t *, libelf_calloc_func_t *, libelf_calloc_func_t *); ulong_t _elf_number(char *, char *, int); int _elf_swap_wrimage(Elf *); uint_t _elf_sys_encoding(void); GElf_Xword _gelf_getdyndtflags_1(Elf *); int _gelf_info_is_shndx(GElf_Xword, GElf_Word); int elf32_zsec_compress(Elf *, Elf_ZSec_State *, int, char *, size_t, Elf32_Shdr *, const char *, const char *, char **, char **); int elf64_zsec_compress(Elf *, Elf_ZSec_State *, int, char *, size_t, Elf64_Shdr *, const char *, const char *, char **, char **); int elf32_zsec_compressible(Elf *, Elf_ZSec_Class, Elf_ZSec_Type, const Elf32_Shdr *, const char *); int elf64_zsec_compressible(Elf *, Elf_ZSec_Class, Elf_ZSec_Type, const Elf64_Shdr *, const char *); int elf32_zsec_decompress(Elf *, Elf_ZSec_State *, Elf32_Shdr *, const char *, const char *, char **, char **); int elf64_zsec_decompress(Elf *, Elf_ZSec_State *, Elf64_Shdr *, const char *, const char *, char **, char **); int elf32_zsec_identify(Elf *, const Elf32_Shdr *, const char *, const char *, size_t *); int elf64_zsec_identify(Elf *, const Elf64_Shdr *, const char *, const char *, size_t *); Elf_ZSec_State *elf_zsec_state_alloc(void); void elf_zsec_state_free(Elf_ZSec_State *); int gelf_zsec_compress(Elf *, Elf_ZSec_State *, int, char *, size_t, GElf_Shdr *, const char *, const char *, char **, char **); int gelf_zsec_compressible(Elf *, Elf_ZSec_Class, Elf_ZSec_Type, const GElf_Shdr *, const char *); int gelf_zsec_decompress(Elf *, Elf_ZSec_State *, GElf_Shdr *, const char *, const char *, char **, char **); int gelf_zsec_identify(Elf *, const GElf_Shdr *, const char *, const char *, size_t *);