xref: /freebsd/usr.sbin/kldxref/ef.h (revision f23aa297)
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_file_t;
32 
33 __BEGIN_DECLS
34 int ef_open(const char *, elf_file_t, int);
35 int ef_close(elf_file_t ef);
36 int ef_read(elf_file_t ef, Elf_Off offset, size_t len, void* dest);
37 int ef_read_entry(elf_file_t ef, Elf_Off offset, size_t len, void **ptr);
38 int ef_seg_read(elf_file_t ef, Elf_Off offset, size_t len, void *dest);
39 int ef_seg_read_entry(elf_file_t ef, Elf_Off offset, size_t len, void**ptr);
40 int ef_lookup_symbol(elf_file_t ef, const char* name, Elf_Sym** sym);
41 __END_DECLS
42 
43 #endif /* _EF_H_*/
44