Fixed IPv4 checksum (network byte order, dimwit)
[tpg/acess2.git] / Kernel / bin / elf.h
index a2ba394..13724eb 100644 (file)
@@ -1,16 +1,15 @@
 /**\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
@@ -33,20 +32,21 @@ struct sElf32_Ehdr {
        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
@@ -101,7 +101,7 @@ struct sElf32_Shent {
        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
@@ -113,7 +113,7 @@ struct elf_sym_s {
        Uint8   info;\r
        Uint8   other;\r
        Uint16  shndx;\r
-};\r
+} __attribute__ ((packed));\r
 #define        STN_UNDEF       0       // Undefined Symbol\r
 \r
 enum {\r
@@ -130,25 +130,25 @@ enum {
 \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
@@ -172,7 +172,7 @@ enum {
 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

UCC git Repository :: git.ucc.asn.au