MCPs -> Many Filthy _S Ps
[akaros.git] / kern / include / elf.h
index 21919ee..8fb320a 100644 (file)
@@ -1,7 +1,8 @@
 #ifndef ROS_INC_ELF_H
 #define ROS_INC_ELF_H
 
-#include <arch/types.h>
+#include <process.h>
+#include <ros/common.h>
 
 #if defined(LITTLE_ENDIAN)
 #  define ELF_MAGIC 0x464C457FU        /* "\x7FELF" in little endian */
@@ -53,8 +54,12 @@ typedef struct Secthdr {
        uint32_t sh_entsize;
 } secthdr_t;
 
+typedef long elf_aux_t[2];
+
 // Values for Proghdr::p_type
 #define ELF_PROG_LOAD          1
+#define ELF_PROG_INTERP                3
+#define ELF_PROG_PHDR          6
 
 // Flag bits for Proghdr::p_flags
 #define ELF_PROG_FLAG_EXEC     1
@@ -70,4 +75,13 @@ typedef struct Secthdr {
 // Values for Secthdr::sh_name
 #define ELF_SHN_UNDEF          0
 
+// Values for auxiliary fields
+#define ELF_AUX_PHDR           3
+#define ELF_AUX_PHENT          4
+#define ELF_AUX_PHNUM          5
+#define ELF_AUX_ENTRY          9
+
+struct file;
+int load_elf(struct proc* p, struct file* f);
+
 #endif /* !ROS_INC_ELF_H */