IBNOS
Classes | Macros | Functions
elf.h File Reference
#include <stdint.h>
#include <stdbool.h>
#include <process/process.h>
Include dependency graph for elf.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  elfHeader
 
struct  elfSectionTable
 
struct  elfSymbolTable
 
struct  selfSymbolInfo
 
struct  elfReolcationTable
 
struct  elfReolcationTableAddend
 
struct  elfProgramHeader
 
struct  elfDynamicEntry
 

Macros

#define ELF_IDENT_MAG0   0
 
#define ELF_IDENT_MAG1   1
 
#define ELF_IDENT_MAG2   2
 
#define ELF_IDENT_MAG3   3
 
#define ELF_IDENT_CLASS   4
 
#define ELF_IDENT_DATA   5
 
#define ELF_IDENT_VERSION   6
 
#define ELF_IDENT_OSABI   7
 
#define ELF_IDENT_ABIVERSION   8
 
#define ELF_IDENT_PAD   9
 
#define ELF_NIDENT   16
 
#define ELF_MAG0   0x7f
 
#define ELF_MAG1   'E'
 
#define ELF_MAG2   'L'
 
#define ELF_MAG3   'F'
 
#define ELF_CLASS_NONE   0
 
#define ELF_CLASS_32   1
 
#define ELF_CLASS_64   2
 
#define ELF_MACHINE_386   3
 
#define ELF_DATA_NONE   0
 
#define ELF_DATA_2LSB   1
 
#define ELF_DATA_2MSB   2
 
#define ELF_TYPE_NONE   0
 
#define ELF_TYPE_REL   1
 
#define ELF_TYPE_EXEC   2
 
#define ELF_TYPE_DYN   3
 
#define ELF_TYPE_CORE   4
 
#define ELF_TYPE_LOOS   0xfe00
 
#define ELF_TYPE_HIOS   0xfeff
 
#define ELF_TYPE_LOPROC   0xff00
 
#define ELF_TYPE_HIPROC   0xffff
 
#define ELF_SHN_UNDELF   0
 
#define ELF_SHN_LORESERVE   0xff00
 
#define ELF_SHN_LOPROC   0xff00
 
#define ELF_SHN_HIPROC   0xff1f
 
#define ELF_SHN_LOOS   0xff20
 
#define ELF_SHN_HIOS   0xff3f
 
#define ELF_SHN_ABS   0xfff1
 
#define ELF_SHN_COMMON   0xfff2
 
#define ELF_SHN_XINDEX   0xffff
 
#define ELF_SHN_HIRESERVE   0xffff
 
#define ELF_STYPE_NULL   0
 
#define ELF_STYPE_PROGBITS   1
 
#define ELF_STYPE_SYMTAB   2
 
#define ELF_STYPE_STRTAB   3
 
#define ELF_STYPE_RELA   4
 
#define ELF_STYPE_HASH   5
 
#define ELF_STYPE_DYNAMIC   6
 
#define ELF_STYPE_NOTE   7
 
#define ELF_STYPE_NOBITS   8
 
#define ELF_STYPE_REL   9
 
#define ELF_STYPE_SHLIB   10
 
#define ELF_STYPE_DYNSYM   11
 
#define ELF_STYPE_INIT_ARRAY   14
 
#define ELF_STYPE_FINI_ARRAY   15
 
#define ELF_STYPE_PREINIT_ARRAY   16
 
#define ELF_STYPE_GROUP   17
 
#define ELF_STYPE_SYMTAB_SHNDX   18
 
#define ELF_STYPE_LOOS   0x60000000
 
#define ELF_STYPE_HIOS   0x6fffffff
 
#define ELF_STYPE_LOPROC   0x70000000
 
#define ELF_STYPE_HIPROC   0x7fffffff
 
#define ELF_STYPE_LOUSER   0x80000000
 
#define ELF_STYPE_HIUSER   0xffffffff
 
#define ELF_SFLAGS_WRITE   0x1
 
#define ELF_SFLAGS_ALLOC   0x2
 
#define ELF_SFLAGS_EXECINSTR   0x4
 
#define ELF_SFLAGS_MERGE   0x10
 
#define ELF_SFLAGS_STRINGS   0x20
 
#define ELF_SFLAGS_INFO_LINK   0x40
 
#define ELF_SFLAGS_LINK_ORDER   0x80
 
#define ELF_SFLAGS_OS_NONCONFORMING   0x100
 
#define ELF_SFLAGS_GROUP   0x200
 
#define ELF_SFLAGS_MASKOS   0x0ff00000
 
#define ELF_SFLAGS_MASKPROC   0xf0000000
 
#define ELF_PTYPE_NULL   0
 
#define ELF_PTYPE_LOAD   1
 
#define ELF_PTYPE_DYNAMIC   2
 
#define ELF_PTYPE_INTERP   3
 
#define ELF_PTYPE_NOTE   4
 
#define ELF_PTYPE_SHLIB   5
 
#define ELF_PTYPE_PHDR   6
 
#define ELF_PTYPE_LOOS   0x60000000
 
#define ELF_PTYPE_HIOS   0x6fffffff
 
#define ELF_PTYPE_LOPROC   0x70000000
 
#define ELF_PTYPE_HIPROC   0x7fffffff
 

Functions

bool elfLoadBinary (struct process *p, void *addr, uint32_t length)
 Loads an ELF executable stored in the memory into a process. More...
 

Macro Definition Documentation

◆ ELF_CLASS_32

#define ELF_CLASS_32   1

Definition at line 52 of file elf.h.

◆ ELF_CLASS_64

#define ELF_CLASS_64   2

Definition at line 53 of file elf.h.

◆ ELF_CLASS_NONE

#define ELF_CLASS_NONE   0

Definition at line 51 of file elf.h.

◆ ELF_DATA_2LSB

#define ELF_DATA_2LSB   1

Definition at line 59 of file elf.h.

◆ ELF_DATA_2MSB

#define ELF_DATA_2MSB   2

Definition at line 60 of file elf.h.

◆ ELF_DATA_NONE

#define ELF_DATA_NONE   0

Definition at line 58 of file elf.h.

◆ ELF_IDENT_ABIVERSION

#define ELF_IDENT_ABIVERSION   8

Definition at line 42 of file elf.h.

◆ ELF_IDENT_CLASS

#define ELF_IDENT_CLASS   4

Definition at line 38 of file elf.h.

◆ ELF_IDENT_DATA

#define ELF_IDENT_DATA   5

Definition at line 39 of file elf.h.

◆ ELF_IDENT_MAG0

#define ELF_IDENT_MAG0   0

Definition at line 34 of file elf.h.

◆ ELF_IDENT_MAG1

#define ELF_IDENT_MAG1   1

Definition at line 35 of file elf.h.

◆ ELF_IDENT_MAG2

#define ELF_IDENT_MAG2   2

Definition at line 36 of file elf.h.

◆ ELF_IDENT_MAG3

#define ELF_IDENT_MAG3   3

Definition at line 37 of file elf.h.

◆ ELF_IDENT_OSABI

#define ELF_IDENT_OSABI   7

Definition at line 41 of file elf.h.

◆ ELF_IDENT_PAD

#define ELF_IDENT_PAD   9

Definition at line 43 of file elf.h.

◆ ELF_IDENT_VERSION

#define ELF_IDENT_VERSION   6

Definition at line 40 of file elf.h.

◆ ELF_MACHINE_386

#define ELF_MACHINE_386   3

Definition at line 56 of file elf.h.

◆ ELF_MAG0

#define ELF_MAG0   0x7f

Definition at line 46 of file elf.h.

◆ ELF_MAG1

#define ELF_MAG1   'E'

Definition at line 47 of file elf.h.

◆ ELF_MAG2

#define ELF_MAG2   'L'

Definition at line 48 of file elf.h.

◆ ELF_MAG3

#define ELF_MAG3   'F'

Definition at line 49 of file elf.h.

◆ ELF_NIDENT

#define ELF_NIDENT   16

Definition at line 44 of file elf.h.

◆ ELF_PTYPE_DYNAMIC

#define ELF_PTYPE_DYNAMIC   2

Definition at line 121 of file elf.h.

◆ ELF_PTYPE_HIOS

#define ELF_PTYPE_HIOS   0x6fffffff

Definition at line 127 of file elf.h.

◆ ELF_PTYPE_HIPROC

#define ELF_PTYPE_HIPROC   0x7fffffff

Definition at line 129 of file elf.h.

◆ ELF_PTYPE_INTERP

#define ELF_PTYPE_INTERP   3

Definition at line 122 of file elf.h.

◆ ELF_PTYPE_LOAD

#define ELF_PTYPE_LOAD   1

Definition at line 120 of file elf.h.

◆ ELF_PTYPE_LOOS

#define ELF_PTYPE_LOOS   0x60000000

Definition at line 126 of file elf.h.

◆ ELF_PTYPE_LOPROC

#define ELF_PTYPE_LOPROC   0x70000000

Definition at line 128 of file elf.h.

◆ ELF_PTYPE_NOTE

#define ELF_PTYPE_NOTE   4

Definition at line 123 of file elf.h.

◆ ELF_PTYPE_NULL

#define ELF_PTYPE_NULL   0

Definition at line 119 of file elf.h.

◆ ELF_PTYPE_PHDR

#define ELF_PTYPE_PHDR   6

Definition at line 125 of file elf.h.

◆ ELF_PTYPE_SHLIB

#define ELF_PTYPE_SHLIB   5

Definition at line 124 of file elf.h.

◆ ELF_SFLAGS_ALLOC

#define ELF_SFLAGS_ALLOC   0x2

Definition at line 108 of file elf.h.

◆ ELF_SFLAGS_EXECINSTR

#define ELF_SFLAGS_EXECINSTR   0x4

Definition at line 109 of file elf.h.

◆ ELF_SFLAGS_GROUP

#define ELF_SFLAGS_GROUP   0x200

Definition at line 115 of file elf.h.

◆ ELF_SFLAGS_INFO_LINK

#define ELF_SFLAGS_INFO_LINK   0x40

Definition at line 112 of file elf.h.

◆ ELF_SFLAGS_LINK_ORDER

#define ELF_SFLAGS_LINK_ORDER   0x80

Definition at line 113 of file elf.h.

◆ ELF_SFLAGS_MASKOS

#define ELF_SFLAGS_MASKOS   0x0ff00000

Definition at line 116 of file elf.h.

◆ ELF_SFLAGS_MASKPROC

#define ELF_SFLAGS_MASKPROC   0xf0000000

Definition at line 117 of file elf.h.

◆ ELF_SFLAGS_MERGE

#define ELF_SFLAGS_MERGE   0x10

Definition at line 110 of file elf.h.

◆ ELF_SFLAGS_OS_NONCONFORMING

#define ELF_SFLAGS_OS_NONCONFORMING   0x100

Definition at line 114 of file elf.h.

◆ ELF_SFLAGS_STRINGS

#define ELF_SFLAGS_STRINGS   0x20

Definition at line 111 of file elf.h.

◆ ELF_SFLAGS_WRITE

#define ELF_SFLAGS_WRITE   0x1

Definition at line 107 of file elf.h.

◆ ELF_SHN_ABS

#define ELF_SHN_ABS   0xfff1

Definition at line 78 of file elf.h.

◆ ELF_SHN_COMMON

#define ELF_SHN_COMMON   0xfff2

Definition at line 79 of file elf.h.

◆ ELF_SHN_HIOS

#define ELF_SHN_HIOS   0xff3f

Definition at line 77 of file elf.h.

◆ ELF_SHN_HIPROC

#define ELF_SHN_HIPROC   0xff1f

Definition at line 75 of file elf.h.

◆ ELF_SHN_HIRESERVE

#define ELF_SHN_HIRESERVE   0xffff

Definition at line 81 of file elf.h.

◆ ELF_SHN_LOOS

#define ELF_SHN_LOOS   0xff20

Definition at line 76 of file elf.h.

◆ ELF_SHN_LOPROC

#define ELF_SHN_LOPROC   0xff00

Definition at line 74 of file elf.h.

◆ ELF_SHN_LORESERVE

#define ELF_SHN_LORESERVE   0xff00

Definition at line 73 of file elf.h.

◆ ELF_SHN_UNDELF

#define ELF_SHN_UNDELF   0

Definition at line 72 of file elf.h.

◆ ELF_SHN_XINDEX

#define ELF_SHN_XINDEX   0xffff

Definition at line 80 of file elf.h.

◆ ELF_STYPE_DYNAMIC

#define ELF_STYPE_DYNAMIC   6

Definition at line 89 of file elf.h.

◆ ELF_STYPE_DYNSYM

#define ELF_STYPE_DYNSYM   11

Definition at line 94 of file elf.h.

◆ ELF_STYPE_FINI_ARRAY

#define ELF_STYPE_FINI_ARRAY   15

Definition at line 96 of file elf.h.

◆ ELF_STYPE_GROUP

#define ELF_STYPE_GROUP   17

Definition at line 98 of file elf.h.

◆ ELF_STYPE_HASH

#define ELF_STYPE_HASH   5

Definition at line 88 of file elf.h.

◆ ELF_STYPE_HIOS

#define ELF_STYPE_HIOS   0x6fffffff

Definition at line 101 of file elf.h.

◆ ELF_STYPE_HIPROC

#define ELF_STYPE_HIPROC   0x7fffffff

Definition at line 103 of file elf.h.

◆ ELF_STYPE_HIUSER

#define ELF_STYPE_HIUSER   0xffffffff

Definition at line 105 of file elf.h.

◆ ELF_STYPE_INIT_ARRAY

#define ELF_STYPE_INIT_ARRAY   14

Definition at line 95 of file elf.h.

◆ ELF_STYPE_LOOS

#define ELF_STYPE_LOOS   0x60000000

Definition at line 100 of file elf.h.

◆ ELF_STYPE_LOPROC

#define ELF_STYPE_LOPROC   0x70000000

Definition at line 102 of file elf.h.

◆ ELF_STYPE_LOUSER

#define ELF_STYPE_LOUSER   0x80000000

Definition at line 104 of file elf.h.

◆ ELF_STYPE_NOBITS

#define ELF_STYPE_NOBITS   8

Definition at line 91 of file elf.h.

◆ ELF_STYPE_NOTE

#define ELF_STYPE_NOTE   7

Definition at line 90 of file elf.h.

◆ ELF_STYPE_NULL

#define ELF_STYPE_NULL   0

Definition at line 83 of file elf.h.

◆ ELF_STYPE_PREINIT_ARRAY

#define ELF_STYPE_PREINIT_ARRAY   16

Definition at line 97 of file elf.h.

◆ ELF_STYPE_PROGBITS

#define ELF_STYPE_PROGBITS   1

Definition at line 84 of file elf.h.

◆ ELF_STYPE_REL

#define ELF_STYPE_REL   9

Definition at line 92 of file elf.h.

◆ ELF_STYPE_RELA

#define ELF_STYPE_RELA   4

Definition at line 87 of file elf.h.

◆ ELF_STYPE_SHLIB

#define ELF_STYPE_SHLIB   10

Definition at line 93 of file elf.h.

◆ ELF_STYPE_STRTAB

#define ELF_STYPE_STRTAB   3

Definition at line 86 of file elf.h.

◆ ELF_STYPE_SYMTAB

#define ELF_STYPE_SYMTAB   2

Definition at line 85 of file elf.h.

◆ ELF_STYPE_SYMTAB_SHNDX

#define ELF_STYPE_SYMTAB_SHNDX   18

Definition at line 99 of file elf.h.

◆ ELF_TYPE_CORE

#define ELF_TYPE_CORE   4

Definition at line 66 of file elf.h.

◆ ELF_TYPE_DYN

#define ELF_TYPE_DYN   3

Definition at line 65 of file elf.h.

◆ ELF_TYPE_EXEC

#define ELF_TYPE_EXEC   2

Definition at line 64 of file elf.h.

◆ ELF_TYPE_HIOS

#define ELF_TYPE_HIOS   0xfeff

Definition at line 68 of file elf.h.

◆ ELF_TYPE_HIPROC

#define ELF_TYPE_HIPROC   0xffff

Definition at line 70 of file elf.h.

◆ ELF_TYPE_LOOS

#define ELF_TYPE_LOOS   0xfe00

Definition at line 67 of file elf.h.

◆ ELF_TYPE_LOPROC

#define ELF_TYPE_LOPROC   0xff00

Definition at line 69 of file elf.h.

◆ ELF_TYPE_NONE

#define ELF_TYPE_NONE   0

Definition at line 62 of file elf.h.

◆ ELF_TYPE_REL

#define ELF_TYPE_REL   1

Definition at line 63 of file elf.h.