xref: /titanic_51/usr/src/cmd/sgs/libelf/common/llib-lelf (revision ba7866cd2cbdf574f47d4e38a1301b90744dd677)
17c478bd9Sstevel@tonic-gate/*
27c478bd9Sstevel@tonic-gate * CDDL HEADER START
37c478bd9Sstevel@tonic-gate *
47c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the
510a4fa49Srie * Common Development and Distribution License (the "License").
610a4fa49Srie * You may not use this file except in compliance with the License.
77c478bd9Sstevel@tonic-gate *
87c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
107c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions
117c478bd9Sstevel@tonic-gate * and limitations under the License.
127c478bd9Sstevel@tonic-gate *
137c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
147c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
167c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
177c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
187c478bd9Sstevel@tonic-gate *
197c478bd9Sstevel@tonic-gate * CDDL HEADER END
207c478bd9Sstevel@tonic-gate */
217c478bd9Sstevel@tonic-gate
227c478bd9Sstevel@tonic-gate/*
232a93c375SAli Bahrami * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
247c478bd9Sstevel@tonic-gate */
257c478bd9Sstevel@tonic-gate
267257d1b4Sraf/* LINTLIBRARY */
277257d1b4Sraf/* PROTOLIB1 */
287257d1b4Sraf
297c478bd9Sstevel@tonic-gate/*
307c478bd9Sstevel@tonic-gate * Generic interface definition for usr/src/lib/libelf.
317c478bd9Sstevel@tonic-gate */
327c478bd9Sstevel@tonic-gate
332a93c375SAli Bahrami#include <_libelf.h>
347c478bd9Sstevel@tonic-gate#include <nlist.h>
357c478bd9Sstevel@tonic-gate
367c478bd9Sstevel@tonic-gate
377c478bd9Sstevel@tonic-gate/*
387c478bd9Sstevel@tonic-gate * Elf32 Symbols
397c478bd9Sstevel@tonic-gate */
407c478bd9Sstevel@tonic-gatesize_t		elf32_fsize(Elf_Type, size_t, uint_t);
417c478bd9Sstevel@tonic-gateElf32_Ehdr *	elf32_getehdr(Elf *);
427c478bd9Sstevel@tonic-gateElf32_Phdr *	elf32_getphdr(Elf *);
437c478bd9Sstevel@tonic-gateElf32_Shdr *	elf32_getshdr(Elf_Scn *);
447c478bd9Sstevel@tonic-gateElf32_Ehdr *	elf32_newehdr(Elf *);
457c478bd9Sstevel@tonic-gateElf32_Phdr *	elf32_newphdr(Elf *, size_t);
467c478bd9Sstevel@tonic-gateElf_Data *	elf32_xlatetof(Elf_Data *, const Elf_Data *, uint_t);
477c478bd9Sstevel@tonic-gateElf_Data *	elf32_xlatetom(Elf_Data *, const Elf_Data *, uint_t);
487c478bd9Sstevel@tonic-gate
497c478bd9Sstevel@tonic-gate
507c478bd9Sstevel@tonic-gate/*
517c478bd9Sstevel@tonic-gate * Elf64 Symbols
527c478bd9Sstevel@tonic-gate */
537c478bd9Sstevel@tonic-gatesize_t		elf64_fsize(Elf_Type, size_t, uint_t);
547c478bd9Sstevel@tonic-gateElf64_Ehdr *	elf64_getehdr(Elf *);
557c478bd9Sstevel@tonic-gateElf64_Phdr *	elf64_getphdr(Elf *);
567c478bd9Sstevel@tonic-gateElf64_Shdr *	elf64_getshdr(Elf_Scn *);
577c478bd9Sstevel@tonic-gateElf64_Ehdr *	elf64_newehdr(Elf *);
587c478bd9Sstevel@tonic-gateElf64_Phdr *	elf64_newphdr(Elf *, size_t);
597c478bd9Sstevel@tonic-gateElf_Data *	elf64_xlatetof(Elf_Data *, const Elf_Data *, uint_t);
607c478bd9Sstevel@tonic-gateElf_Data *	elf64_xlatetom(Elf_Data *, const Elf_Data *, uint_t);
617c478bd9Sstevel@tonic-gate
627c478bd9Sstevel@tonic-gate
637c478bd9Sstevel@tonic-gate/*
647c478bd9Sstevel@tonic-gate * GElf Symbols
657c478bd9Sstevel@tonic-gate */
667c478bd9Sstevel@tonic-gatesize_t		gelf_fsize(Elf *, Elf_Type, size_t, uint_t);
677c478bd9Sstevel@tonic-gateint		gelf_getclass(Elf *);
687c478bd9Sstevel@tonic-gateGElf_Ehdr *	gelf_getehdr(Elf *, GElf_Ehdr *);
697c478bd9Sstevel@tonic-gateint		gelf_update_ehdr(Elf *, GElf_Ehdr *);
707c478bd9Sstevel@tonic-gateulong_t		gelf_newehdr(Elf *, int);
717c478bd9Sstevel@tonic-gateGElf_Phdr *	gelf_getphdr(Elf *, int, GElf_Phdr *);
727c478bd9Sstevel@tonic-gateint		gelf_update_phdr(Elf *, int, GElf_Phdr *);
737c478bd9Sstevel@tonic-gateulong_t		gelf_newphdr(Elf *, size_t);
747c478bd9Sstevel@tonic-gateGElf_Shdr *	gelf_getshdr(Elf_Scn *,  GElf_Shdr *);
757c478bd9Sstevel@tonic-gateint		gelf_update_shdr(Elf_Scn *, GElf_Shdr *);
767c478bd9Sstevel@tonic-gateElf_Data *	gelf_xlatetof(Elf *, Elf_Data *, const Elf_Data *, uint_t);
777c478bd9Sstevel@tonic-gateElf_Data *	gelf_xlatetom(Elf *, Elf_Data *, const Elf_Data *, uint_t);
787c478bd9Sstevel@tonic-gateGElf_Sym *	gelf_getsym(Elf_Data *, int, GElf_Sym *);
797c478bd9Sstevel@tonic-gateint		gelf_update_sym(Elf_Data *, int, GElf_Sym *);
807c478bd9Sstevel@tonic-gateGElf_Syminfo *	gelf_getsyminfo(Elf_Data *, int, GElf_Syminfo *);
817c478bd9Sstevel@tonic-gateint		gelf_update_syminfo(Elf_Data *, int, GElf_Syminfo *);
827c478bd9Sstevel@tonic-gateGElf_Sym *	gelf_getsymshndx(Elf_Data *, Elf_Data *, int, GElf_Sym *,
837c478bd9Sstevel@tonic-gate		    Elf32_Word *);
847c478bd9Sstevel@tonic-gateint		gelf_update_symshndx(Elf_Data *, Elf_Data *, int, GElf_Sym *,
857c478bd9Sstevel@tonic-gate		    Elf32_Word);
867c478bd9Sstevel@tonic-gateGElf_Move *	gelf_getmove(Elf_Data *, int, GElf_Move *);
877c478bd9Sstevel@tonic-gateint		gelf_update_move(Elf_Data *, int, GElf_Move *);
887c478bd9Sstevel@tonic-gateGElf_Dyn *	gelf_getdyn(Elf_Data *, int, GElf_Dyn *);
897c478bd9Sstevel@tonic-gateint		gelf_update_dyn(Elf_Data *, int, GElf_Dyn *);
907c478bd9Sstevel@tonic-gateGElf_Rela *	gelf_getrela(Elf_Data *, int, GElf_Rela *);
917c478bd9Sstevel@tonic-gateint		gelf_update_rela(Elf_Data *, int, GElf_Rela *);
927c478bd9Sstevel@tonic-gateGElf_Rel *	gelf_getrel(Elf_Data *, int, GElf_Rel *);
937c478bd9Sstevel@tonic-gateint		gelf_update_rel(Elf_Data *, int, GElf_Rel *);
947c478bd9Sstevel@tonic-gateGElf_Cap *	gelf_getcap(Elf_Data *, int, GElf_Cap *);
957c478bd9Sstevel@tonic-gateint		gelf_update_cap(Elf_Data *, int, GElf_Cap *);
967c478bd9Sstevel@tonic-gate
9710a4fa49SrieGElf_Xword	_gelf_getdyndtflags_1(Elf *);
987c478bd9Sstevel@tonic-gate
997c478bd9Sstevel@tonic-gate/*
1007c478bd9Sstevel@tonic-gate * Class-Independent Elf Symbols
1017c478bd9Sstevel@tonic-gate */
1027c478bd9Sstevel@tonic-gateElf *		elf_begin(int, Elf_Cmd, Elf *);
1037c478bd9Sstevel@tonic-gateint		elf_cntl(Elf *, Elf_Cmd);
1047c478bd9Sstevel@tonic-gateint		elf_end(Elf *);
1057c478bd9Sstevel@tonic-gateconst char *	elf_errmsg(int);
1067c478bd9Sstevel@tonic-gateint		elf_errno(void);
1077c478bd9Sstevel@tonic-gatevoid		elf_fill(int);
1087c478bd9Sstevel@tonic-gateuint_t		elf_flagdata(Elf_Data *, Elf_Cmd, uint_t);
1097c478bd9Sstevel@tonic-gateuint_t		elf_flagehdr(Elf *, Elf_Cmd,  uint_t);
1107c478bd9Sstevel@tonic-gateuint_t		elf_flagelf(Elf *, Elf_Cmd,  uint_t);
1117c478bd9Sstevel@tonic-gateuint_t		elf_flagphdr(Elf *, Elf_Cmd,  uint_t);
1127c478bd9Sstevel@tonic-gateuint_t		elf_flagscn(Elf_Scn *, Elf_Cmd, uint_t);
1137c478bd9Sstevel@tonic-gateuint_t		elf_flagshdr(Elf_Scn *, Elf_Cmd, uint_t);
1147c478bd9Sstevel@tonic-gateElf_Arhdr *	elf_getarhdr(Elf *);
1157c478bd9Sstevel@tonic-gateElf_Arsym *	elf_getarsym(Elf *, size_t *);
1167c478bd9Sstevel@tonic-gateoff_t		elf_getbase(Elf *);
1177c478bd9Sstevel@tonic-gateElf_Data *	elf_getdata(Elf_Scn *, Elf_Data *);
1187c478bd9Sstevel@tonic-gatechar *		elf_getident(Elf *, size_t *);
11930da1432Sahlint		elf_getphnum(Elf *, size_t *);
1207c478bd9Sstevel@tonic-gateint		elf_getshnum(Elf *, size_t *);
1217c478bd9Sstevel@tonic-gateint		elf_getshstrndx(Elf *, size_t *);
1227c478bd9Sstevel@tonic-gateElf_Scn *	elf_getscn(Elf *elf, size_t);
1237c478bd9Sstevel@tonic-gateulong_t		elf_hash(const char *);
1247c478bd9Sstevel@tonic-gateElf_Kind	elf_kind(Elf *);
1257c478bd9Sstevel@tonic-gateElf *		elf_memory(char *, size_t);
1267c478bd9Sstevel@tonic-gatesize_t		elf_ndxscn(Elf_Scn *);
1277c478bd9Sstevel@tonic-gateElf_Data *	elf_newdata(Elf_Scn *);
1287c478bd9Sstevel@tonic-gateElf_Scn *	elf_newscn(Elf *);
1297c478bd9Sstevel@tonic-gateElf_Cmd		elf_next(Elf *);
1307c478bd9Sstevel@tonic-gateElf_Scn *	elf_nextscn(Elf *, Elf_Scn *);
1317c478bd9Sstevel@tonic-gatesize_t		_elf_outsync(int, char *, size_t, uint_t);
1327c478bd9Sstevel@tonic-gatesize_t		elf_rand(Elf *, size_t);
1337c478bd9Sstevel@tonic-gateElf_Data *	elf_rawdata(Elf_Scn *, Elf_Data *);
1347c478bd9Sstevel@tonic-gatechar *		elf_rawfile(Elf *, size_t *);
1357c478bd9Sstevel@tonic-gatechar *		elf_strptr(Elf *, size_t, size_t);
1367c478bd9Sstevel@tonic-gateoff_t		elf_update(Elf *, Elf_Cmd);
1377c478bd9Sstevel@tonic-gateuint_t		elf_version(uint_t);
1387c478bd9Sstevel@tonic-gateint		nlist(const char *, struct nlist *);
1397c478bd9Sstevel@tonic-gate
1407c478bd9Sstevel@tonic-gate
1417c478bd9Sstevel@tonic-gate/*
1427c478bd9Sstevel@tonic-gate * Private Symbols
1437c478bd9Sstevel@tonic-gate */
1442a93c375SAli Bahramiextern void		_elf_execfill(_elf_execfill_func_t *);
1452a93c375SAli Bahramiextern off_t		_elf_getarhdrbase(Elf *);
146*ba7866cdSAli Bahramiextern size_t		_elf_getarsymwordsize(Elf *);
1472a93c375SAli Bahramiextern size_t		_elf_getnextoff(Elf *);
1487c478bd9Sstevel@tonic-gateElf64_Off		_elf_getxoff(Elf_Data *);
149ba2be530Sab196087int			_elf_swap_wrimage(Elf *);
150f3324781Sab196087uint_t			_elf_sys_encoding(void);
1512a93c375SAli Bahrami
1522a93c375SAli Bahramiextern GElf_Xword	_gelf_getdyndtflags_1(Elf *);
153