diff options
author | peter <peter@FreeBSD.org> | 2001-09-11 01:13:15 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2001-09-11 01:13:15 +0000 |
commit | 2975fbf1b355f2dc0a55d5112534cfdc48d0e9df (patch) | |
tree | 86821a17ef3a1d1bb08bc8b0b0c46d5d91382f47 /usr.sbin/kldxref/ef.h | |
parent | 808991de7cecc9e774ffe5031e29362207e75564 (diff) | |
download | FreeBSD-src-2975fbf1b355f2dc0a55d5112534cfdc48d0e9df.zip FreeBSD-src-2975fbf1b355f2dc0a55d5112534cfdc48d0e9df.tar.gz |
Add kldxref(8), for maintaining the linker.hints file for translating
module->pathname.ko. It supports only ELF for now.
Submitted by: bp (with some minor tweaks)
Diffstat (limited to 'usr.sbin/kldxref/ef.h')
-rw-r--r-- | usr.sbin/kldxref/ef.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/usr.sbin/kldxref/ef.h b/usr.sbin/kldxref/ef.h new file mode 100644 index 0000000..7dd110f --- /dev/null +++ b/usr.sbin/kldxref/ef.h @@ -0,0 +1,43 @@ +/* $FreeBSD$ */ + +#ifndef _EF_H_ +#define _EF_H_ + +#define EFT_KLD 1 +#define EFT_KERNEL 2 + +typedef struct elf_file { + char* ef_name; + Elf_Phdr * ef_ph; + int ef_fd; + int ef_type; + Elf_Ehdr ef_hdr; + void* ef_fpage; /* First block of the file */ + int ef_fplen; /* length of first block */ + Elf_Dyn* ef_dyn; /* Symbol table etc. */ + Elf_Off ef_nbuckets; + Elf_Off ef_nchains; + Elf_Off* ef_buckets; + Elf_Off* ef_chains; + Elf_Off* ef_hashtab; + Elf_Off ef_stroff; + caddr_t ef_strtab; + int ef_strsz; + Elf_Off ef_symoff; + Elf_Sym* ef_symtab; + int ef_nsegs; + Elf_Phdr * ef_segs[2]; + int ef_verbose; +} *elf_file_t; + +__BEGIN_DECLS +int ef_open(const char *, elf_file_t, int); +int ef_close(elf_file_t ef); +int ef_read(elf_file_t ef, Elf_Off offset, size_t len, void* dest); +int ef_read_entry(elf_file_t ef, Elf_Off offset, size_t len, void **ptr); +int ef_seg_read(elf_file_t ef, Elf_Off offset, size_t len, void *dest); +int ef_seg_read_entry(elf_file_t ef, Elf_Off offset, size_t len, void**ptr); +int ef_lookup_symbol(elf_file_t ef, const char* name, Elf_Sym** sym); +__END_DECLS + +#endif /* _EF_H_*/ |