summaryrefslogtreecommitdiff
path: root/elf.h
diff options
context:
space:
mode:
authorrtm <rtm>2006-06-12 15:22:12 +0000
committerrtm <rtm>2006-06-12 15:22:12 +0000
commit55e95b16db458b7f9abeca96e541acbdf8d7f85b (patch)
tree92a1fcb6f1cdede7ab83b37acabf76e1bc1b10f4 /elf.h
downloadxv6-labs-55e95b16db458b7f9abeca96e541acbdf8d7f85b.tar.gz
xv6-labs-55e95b16db458b7f9abeca96e541acbdf8d7f85b.tar.bz2
xv6-labs-55e95b16db458b7f9abeca96e541acbdf8d7f85b.zip
import
Diffstat (limited to 'elf.h')
-rw-r--r--elf.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/elf.h b/elf.h
new file mode 100644
index 0000000..ea9f964
--- /dev/null
+++ b/elf.h
@@ -0,0 +1,43 @@
+#ifndef JOS_INC_ELF_H
+#define JOS_INC_ELF_H
+
+#define ELF_MAGIC 0x464C457FU /* "\x7FELF" in little endian */
+
+struct Elf {
+ uint32_t e_magic; // must equal ELF_MAGIC
+ uint8_t e_elf[12];
+ uint16_t e_type;
+ uint16_t e_machine;
+ uint32_t e_version;
+ uint32_t e_entry;
+ uint32_t e_phoff;
+ uint32_t e_shoff;
+ uint32_t e_flags;
+ uint16_t e_ehsize;
+ uint16_t e_phentsize;
+ uint16_t e_phnum;
+ uint16_t e_shentsize;
+ uint16_t e_shnum;
+ uint16_t e_shstrndx;
+};
+
+struct Proghdr {
+ uint32_t p_type;
+ uint32_t p_offset;
+ uint32_t p_va;
+ uint32_t p_pa;
+ uint32_t p_filesz;
+ uint32_t p_memsz;
+ uint32_t p_flags;
+ uint32_t p_align;
+};
+
+// Values for Proghdr::p_type
+#define ELF_PROG_LOAD 1
+
+// Flag bits for Proghdr::p_flags
+#define ELF_PROG_FLAG_EXEC 1
+#define ELF_PROG_FLAG_WRITE 2
+#define ELF_PROG_FLAG_READ 4
+
+#endif /* !JOS_INC_ELF_H */