usbloadergx/cios_installer/elf.h

58 lines
1.7 KiB
C
Raw Normal View History

/* Copyright (C) 2008 Mega Man */
#ifndef __ELF_H_
#define __ELF_H_
#include "stdint.h"
/* File header */
typedef struct Elf32_Ehdr
{
uint32_t magic; /* Magic number */
unsigned char info[12]; /* other info */
uint16_t type; /* Object file type */
uint16_t machine; /* Architecture */
uint32_t version; /* Object file version */
uint32_t entry; /* Entry point virtual address */
uint32_t phoff; /* Program header table file offset */
uint32_t shoff; /* Section header table file offset */
uint32_t flags; /* Processor-specific flags */
uint16_t ehsize; /* ELF header size in bytes */
uint16_t phentsize; /* Program header table entry size */
uint16_t phnum; /* Program header table entry count */
uint16_t shentsize; /* Section header table entry size */
uint16_t shnum; /* Section header table entry count */
uint16_t shstrndx; /* Section header string table index */
} Elf32_Ehdr_t;
/* Conglomeration of the identification bytes, for easy testing as a word. */
#if 0
/** ELF magic for little endian. */
#define ELFMAGIC 0x464c457f
#else
/** ELF magic for big endian. */
#define ELFMAGIC 0x7f454c46
#endif
/* Program segment header. */
typedef struct Elf32_Phdr
{
uint32_t type; /* type */
uint32_t offset; /* file offset */
uint32_t vaddr; /* virtual address */
uint32_t paddr; /* physical address */
uint32_t filesz; /* size in file */
uint32_t memsz; /* size in memory */
uint32_t flags; /* flags */
uint32_t align; /* alignment */
} Elf32_Phdr_t;
/* Possible values for segment type. */
#define PT_LOAD 1 /* Loadable program segment */
/* Possible values for segment flags. */
#define PF_X 1 /* executable */
#define PF_W 2 /* writable */
#define PF_R 4 /* readable */
#endif /* __ELF_H_ */