Newer
Older
ubixos / src / sys / include / ubixos / elf.h
@reddawg reddawg on 28 May 2002 2 KB Its Been lots of work
/**************************************************************************************
 Copyright (c) 2002 The UbixOS Project
 All rights reserved.

 Redistribution and use in source and binary forms, with or without modification,
 are prohibited.

 $Id$

**************************************************************************************/

#ifndef _ELF_H
#define _ELF_H

#include <ubixos/types.h>

typedef struct {
  uChar  eIdent[16]; /* File identification. */
  uShort eType;      /* File type. */
  uShort eMachine;   /* Machine architecture. */
  uLong  eVersion;   /* ELF format version. */
  uLong  eEntry;     /* Entry point. */
  uLong  ePhoff;     /* Program header file offset. */
  uLong  eShoff;     /* Section header file offset. */
  uLong  eFlags;     /* Architecture-specific flags. */
  uShort eEhsize;    /* Size of ELF header in bytes. */
  uShort ePhentsize; /* Size of program header entry. */
  uShort ePhnum;     /* Number of program header entries. */
  uShort eShentsize; /* Size of section header entry. */
  uShort eShnum;     /* Number of section header entries. */
  uShort eShstrndx;  /* Section name strings section. */
  } elfHeader;

typedef struct {
  uLong phType;         /* Entry type. */
  uLong phOffset;       /* File offset of contents. */
  uLong phVaddr;        /* Virtual address in memory image. */
  uLong phPaddr;        /* Physical address (not used). */
  uLong phFilesz;       /* Size of contents in file. */
  uLong phMemsz;        /* Size of contents in memory. */
  uLong phFlags;        /* Access permission flags. */
  uLong phAlign;        /* Alignment in memory and file. */
  } elfProgramheader;

typedef struct {
  uLong shName;        /* Section name (index into the section header string table). */
  uLong shType;        /* Section type. */
  uLong shFlags;       /* Section flags. */
  uLong shAddr;        /* Address in memory image. */
  uLong shOffset;      /* Offset in file. */
  uLong shSize;        /* Size in bytes. */
  uLong shLink;        /* Index of a related section. */
  uLong shInfo;        /* Depends on section type. */
  uLong shAddralign;   /* Alignment in bytes. */
  uLong shEntsize;     /* Size of each entry in section. */
  } elfSectionheader;

#endif