aboutsummaryrefslogtreecommitdiff
path: root/sys/sys/link_elf.h
diff options
context:
space:
mode:
authorDavid E. O'Brien <obrien@FreeBSD.org>2008-07-10 16:35:57 +0000
committerDavid E. O'Brien <obrien@FreeBSD.org>2008-07-10 16:35:57 +0000
commitf55ffb399099f25810b65311f1cc8a9f9174170c (patch)
tree92d0e8015596d7f9eb108240bd2e3739f401378e /sys/sys/link_elf.h
parente1cb4a353cd5b4f4572cab1bca43adb92f375ffa (diff)
downloadsrc-f55ffb399099f25810b65311f1cc8a9f9174170c.tar.gz
src-f55ffb399099f25810b65311f1cc8a9f9174170c.zip
Allow 'elf_file_t' to be used in a wider scope.
Notes
Notes: svn path=/head/; revision=180431
Diffstat (limited to 'sys/sys/link_elf.h')
-rw-r--r--sys/sys/link_elf.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/sys/sys/link_elf.h b/sys/sys/link_elf.h
index 6e6660f88bb8..b9a5aac2a39f 100644
--- a/sys/sys/link_elf.h
+++ b/sys/sys/link_elf.h
@@ -88,6 +88,57 @@ struct dl_phdr_info
void *dlpi_tls_data;
};
+#ifdef _KERNEL
+
+typedef struct elf_file {
+ struct linker_file lf; /* Common fields */
+ int preloaded; /* Was file pre-loaded */
+ caddr_t address; /* Relocation address */
+#ifdef SPARSE_MAPPING
+ vm_object_t object; /* VM object to hold file pages */
+#endif
+ Elf_Dyn* dynamic; /* Symbol table etc. */
+ Elf_Hashelt nbuckets; /* DT_HASH info */
+ Elf_Hashelt nchains;
+ const Elf_Hashelt* buckets;
+ const Elf_Hashelt* chains;
+ caddr_t hash;
+ caddr_t strtab; /* DT_STRTAB */
+ int strsz; /* DT_STRSZ */
+ const Elf_Sym* symtab; /* DT_SYMTAB */
+ Elf_Addr* got; /* DT_PLTGOT */
+ const Elf_Rel* pltrel; /* DT_JMPREL */
+ int pltrelsize; /* DT_PLTRELSZ */
+ const Elf_Rela* pltrela; /* DT_JMPREL */
+ int pltrelasize; /* DT_PLTRELSZ */
+ const Elf_Rel* rel; /* DT_REL */
+ int relsize; /* DT_RELSZ */
+ const Elf_Rela* rela; /* DT_RELA */
+ int relasize; /* DT_RELASZ */
+ caddr_t modptr;
+ const Elf_Sym* ddbsymtab; /* The symbol table we are using */
+ long ddbsymcnt; /* Number of symbols */
+ caddr_t ddbstrtab; /* String table */
+ long ddbstrcnt; /* number of bytes in string table */
+ caddr_t symbase; /* malloc'ed symbold base */
+ caddr_t strbase; /* malloc'ed string base */
+ caddr_t ctftab; /* CTF table */
+ long ctfcnt; /* number of bytes in CTF table */
+ caddr_t ctfoff; /* CTF offset table */
+ caddr_t typoff; /* Type offset table */
+ long typlen; /* Number of type entries. */
+#ifdef GDB
+ struct link_map gdb; /* hooks for gdb */
+#endif
+} *elf_file_t;
+
+/*
+ * The kernel symbol table starts here.
+ */
+extern struct _dynamic _DYNAMIC;
+
+#endif /* _KERNEL */
+
__BEGIN_DECLS
typedef int (*__dl_iterate_hdr_callback)(struct dl_phdr_info *, size_t,