/**\r
- Acess v1\r
- \file bin_elf.h\r
- \brief ELF Exeutable Loader\r
-*/\r
+ * \file elf.h\r
+ * \brief ELF Exeutable Loader\r
+ */\r
#ifndef _BIN_ELF_H\r
#define _BIN_ELF_H\r
\r
/**\r
- \struct elf_header_s\r
- \brief ELF File Header\r
-*/\r
-struct sElf32_Ehdr {\r
+ * \brief ELF File Header\r
+ */\r
+struct sElf32_Ehdr\r
+{\r
union {\r
char ident[16]; //!< Identifier Bytes\r
struct {\r
Uint16 shentsize; //!< Section Header Entry Size\r
Uint16 shentcount; //!< Section Header Entry Count\r
Uint16 shstrindex; //!< Section Header String Table Index\r
-};\r
+} __attribute__ ((packed));\r
\r
/**\r
- \name Executable Types\r
- \{\r
-*/\r
-#define ET_NONE 0 //!< NULL Type\r
-#define ET_REL 1 //!< Relocatable (Object)\r
-#define ET_EXEC 2 //!< Executable\r
-#define ET_DYN 3 //!< Dynamic Library\r
-#define ET_CORE 4 //!< Core?\r
-#define ET_LOPROC 0xFF00 //!< Low Impl Defined\r
-#define ET_HIPROC 0xFFFF //!< High Impl Defined\r
-//! \}\r
+ * \brief Executable Types\r
+ */\r
+enum eElf32_ExecTypes\r
+{\r
+ ET_NONE = 0, //!< NULL Type\r
+ ET_REL = 1, //!< Relocatable (Object)\r
+ ET_EXEC = 2, //!< Executable\r
+ ET_DYN = 3, //!< Dynamic Library\r
+ ET_CORE = 4, //!< Core?\r
+ ET_LOPROC = 0xFF00, //!< Low Impl Defined\r
+ ET_HIPROC = 0xFFFF //!< High Impl Defined\r
+};\r
\r
/**\r
\name Section IDs\r
Uint32 info;\r
Uint32 addralign;\r
Uint32 entsize;\r
-}; //sizeof = 40\r
+} __attribute__ ((packed)); //sizeof = 40\r
\r
struct elf_sym_s {\r
union {\r
Uint8 info;\r
Uint8 other;\r
Uint16 shndx;\r
-};\r
+} __attribute__ ((packed));\r
#define STN_UNDEF 0 // Undefined Symbol\r
\r
enum {\r
\r
struct sElf32_Phdr {\r
Uint32 Type;\r
- Uint Offset;\r
- Uint VAddr;\r
- Uint PAddr;\r
+ Uint32 Offset;\r
+ Uint32 VAddr;\r
+ Uint32 PAddr;\r
Uint32 FileSize;\r
Uint32 MemSize;\r
Uint32 Flags;\r
Uint32 Align;\r
-};\r
+} __attribute__ ((packed));\r
\r
struct elf32_rel_s {\r
Uint32 r_offset;\r
Uint32 r_info;\r
-};\r
+} __attribute__ ((packed));\r
\r
struct elf32_rela_s {\r
Uint32 r_offset;\r
Uint32 r_info;\r
Sint32 r_addend;\r
-};\r
+} __attribute__ ((packed));\r
\r
enum {\r
R_386_NONE = 0, // none\r
struct elf32_dyn_s {\r
Uint32 d_tag;\r
Uint32 d_val; //Also d_ptr\r
-};\r
+} __attribute__ ((packed));\r
\r
enum {\r
DT_NULL, //!< Marks End of list\r