summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2007-01-11 16:25:07 +0100
committerMichael Brown2007-01-11 16:25:07 +0100
commit230f16538f4b0ad9ddd1edd7da24c52c39da0c8d (patch)
tree715fe194c396c42c845adcfe51db05ca6b9e88bf /src
parentUpdate TFTP to use a struct buffer rather than a callback. (diff)
downloadipxe-230f16538f4b0ad9ddd1edd7da24c52c39da0c8d.tar.gz
ipxe-230f16538f4b0ad9ddd1edd7da24c52c39da0c8d.tar.xz
ipxe-230f16538f4b0ad9ddd1edd7da24c52c39da0c8d.zip
Create include/gpxe/elf.h for the ELF bits that aren't part of the ELF
standard and so don't belong in include/elf.h
Diffstat (limited to 'src')
-rw-r--r--src/image/elf.c12
-rw-r--r--src/include/gpxe/elf.h26
2 files changed, 30 insertions, 8 deletions
diff --git a/src/image/elf.c b/src/image/elf.c
index c746caa41..c76c8f5e9 100644
--- a/src/image/elf.c
+++ b/src/image/elf.c
@@ -27,19 +27,12 @@
#include <elf.h>
#include <gpxe/uaccess.h>
#include <gpxe/segment.h>
+#include <gpxe/elf.h>
typedef Elf32_Ehdr Elf_Ehdr;
typedef Elf32_Phdr Elf_Phdr;
typedef Elf32_Off Elf_Off;
-/** An ELF file */
-struct elf {
- /** ELF file image */
- userptr_t image;
- /** Length of ELF file image */
- size_t len;
-};
-
/**
* Load ELF segment into memory
*
@@ -126,5 +119,8 @@ int elf_load ( struct elf *elf ) {
return rc;
}
+ /* Fill in entry point address */
+ elf->entry = ehdr.e_entry;
+
return 0;
}
diff --git a/src/include/gpxe/elf.h b/src/include/gpxe/elf.h
new file mode 100644
index 000000000..8abbb02e1
--- /dev/null
+++ b/src/include/gpxe/elf.h
@@ -0,0 +1,26 @@
+#ifndef _GPXE_ELF_H
+#define _GPXE_ELF_H
+
+/**
+ * @file
+ *
+ * ELF image format
+ *
+ */
+
+#include <elf.h>
+
+/** An ELF file */
+struct elf {
+ /** ELF file image */
+ userptr_t image;
+ /** Length of ELF file image */
+ size_t len;
+
+ /** Entry point */
+ physaddr_t entry;
+};
+
+extern int elf_load ( struct elf *elf );
+
+#endif /* _GPXE_ELF_H */