summaryrefslogtreecommitdiffstats
path: root/usr.sbin/kldxref/ef.h
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2001-09-11 01:13:15 +0000
committerpeter <peter@FreeBSD.org>2001-09-11 01:13:15 +0000
commit2975fbf1b355f2dc0a55d5112534cfdc48d0e9df (patch)
tree86821a17ef3a1d1bb08bc8b0b0c46d5d91382f47 /usr.sbin/kldxref/ef.h
parent808991de7cecc9e774ffe5031e29362207e75564 (diff)
downloadFreeBSD-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.h43
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_*/
OpenPOWER on IntegriCloud