xref: /freebsd/usr.sbin/kldxref/ef.h (revision 1eed250a)
1 /* $FreeBSD$ */
2 
3 #ifndef _EF_H_
4 #define _EF_H_
5 
6 #define	EFT_KLD		1
7 #define	EFT_KERNEL	2
8 
9 typedef struct elf_file {
10 	char*		ef_name;
11 	Elf_Phdr *	ef_ph;
12 	int		ef_fd;
13 	int		ef_type;
14 	Elf_Ehdr	ef_hdr;
15 	void*		ef_fpage;		/* First block of the file */
16 	int		ef_fplen;		/* length of first block */
17 	Elf_Dyn*	ef_dyn;			/* Symbol table etc. */
18 	Elf_Hashelt	ef_nbuckets;
19 	Elf_Hashelt	ef_nchains;
20 	Elf_Hashelt*	ef_buckets;
21 	Elf_Hashelt*	ef_chains;
22 	Elf_Hashelt*	ef_hashtab;
23 	Elf_Off		ef_stroff;
24 	caddr_t		ef_strtab;
25 	int		ef_strsz;
26 	Elf_Off		ef_symoff;
27 	Elf_Sym*	ef_symtab;
28 	int		ef_nsegs;
29 	Elf_Phdr *	ef_segs[2];
30 	int		ef_verbose;
31 	Elf_Rel *	ef_rel;			/* relocation table */
32 	int		ef_relsz;		/* number of entries */
33 	Elf_Rela *	ef_rela;		/* relocation table */
34 	int		ef_relasz;		/* number of entries */
35 } *elf_file_t;
36 
37 __BEGIN_DECLS
38 int ef_open(const char *, elf_file_t, int);
39 int ef_close(elf_file_t ef);
40 int ef_read(elf_file_t ef, Elf_Off offset, size_t len, void* dest);
41 int ef_read_entry(elf_file_t ef, Elf_Off offset, size_t len, void **ptr);
42 int ef_reloc(elf_file_t ef, Elf_Off offset, size_t len, void *dest);
43 int ef_seg_read(elf_file_t ef, Elf_Off offset, size_t len, void *dest);
44 int ef_seg_read_rel(elf_file_t ef, Elf_Off offset, size_t len, void *dest);
45 int ef_seg_read_entry(elf_file_t ef, Elf_Off offset, size_t len, void**ptr);
46 int ef_seg_read_entry_rel(elf_file_t ef, Elf_Off offset, size_t len, void**ptr);
47 int ef_lookup_symbol(elf_file_t ef, const char* name, Elf_Sym** sym);
48 __END_DECLS
49 
50 #endif /* _EF_H_*/
51