//
//  elf.txt
//
//  www.catch22.net
//
//  Copyright (C) 2012 James Brown
//  Please refer to the file LICENCE.TXT for copying permission
//

// http://www.ouah.org/RevEng/x430.htm

include "basetypes.txt";

typedef uint32   Elf32_Addr;
typedef uint16   Elf32_Half;
typedef uint32   Elf32_Off;
typedef int32    Elf32_Sword;
typedef uint32   Elf32_Word;
 
/* 64-bit ELF base types. */
typedef uint64   Elf64_Addr;
typedef uint16   Elf64_Half;
typedef int16    Elf64_SHalf;
typedef uint64   Elf64_Off;
typedef int64    Elf64_Sword;
typedef uint64   Elf64_Word;

/* ELF File Header */
typedef struct
{
  unsigned char e_ident[EI_NIDENT];     /* Magic number and other info */
  Elf32_Half    e_type;                 /* Object file type */
  Elf32_Half    e_machine;              /* Architecture */
  Elf32_Word    e_version;              /* Object file version */
  Elf32_Addr    e_entry;                /* Entry point virtual address */
  Elf32_Off     e_phoff;                /* Program header table file offset */
  Elf32_Off     e_shoff;                /* Section header table file offset */
  Elf32_Word    e_flags;                /* Processor-specific flags */
  Elf32_Half    e_ehsize;               /* ELF header size in bytes */
  Elf32_Half    e_phentsize;            /* Program header table entry size */
  Elf32_Half    e_phnum;                /* Program header table entry count */
  Elf32_Half    e_shentsize;            /* Section header table entry size */
  Elf32_Half    e_shnum;                /* Section header table entry count */
  Elf32_Half    e_shstrndx;             /* Section header string table index */

} Elf32_Ehdr;