#include <ubixos/elf.h>

const struct {
  char  *elfTypeName;
  uInt32 id;
  } elfType[] = {
    { "ET_NONE",         0 },
    { "ET_REL",          1 },
    { "ET_EXEC",         2 },
    { "ET_DYN",          3 },
    { "ET_CORE",         4 },
    { "ET_LOPROC",  0xff00 },
    { "ET_HIPROC",  0xffff },
    };
    
const struct {
  char   *phTypeName;
  uInt32 id;
  } elfPhType[] = {
    { "PT_NULL",              0 },
    { "PT_LOAD",              1 },
    { "PT_DYNAMIC",           2 },
    { "PT_INTERP",            3 },
    { "PT_NOTE",              4 },
    { "PT_SHLIB",             5 },
    { "PT_PHDR",              6 },
    { "PT_LOPROC",   0x70000000 },
    { "PT_HIPROC",   0x7fffffff },
    };

const struct {
  char   *shTypeName;
  uInt32 id;
  } elfShType[] = {
    {"SHT_NULL",     0 },
    {"SHT_PROGBITS", 1 },
    {"SHT_SYMTAB",   2 },
    {"SHT_STRTAB",   3 },
    {"SHT_RELA",     4 },
    {"SHT_HASH",     5 },
    {"SHT_DYNAMIC",  6 },
    {"SHT_NOTE",     7 },
    {"SHT_NOBITS",   8 },
    {"SHT_REL",      9 },
    {"SHT_SHLIB",   10 },
    {"SHT_DYNSYM",  11 },
    };

char *elfGetShType(int shType) {
  return((char *)elfShType[shType].shTypeName);
  }

char *elfGetPhType(int phType) {
  return((char *)elfPhType[phType].phTypeName);
  }