The Pedigree Project  0.1
Classes | Macros | Typedefs | Functions
linker

the kernel linker More...

+ Collaboration diagram for linker:

Classes

class  Elf
 
class  Module
 
class  KernelElf
 

Macros

#define DEBUG   NOTICE
 
#define ET_NONE   0x0
 
#define ET_REL   0x1
 
#define ET_EXEC   0x2
 
#define ET_DYN   0x3
 
#define ET_CORE   0x4
 
#define SHT_PROGBITS   0x1
 
#define SHT_SYMTAB   0x2
 
#define SHT_STRTAB   0x3
 
#define SHT_RELA   0x4
 
#define SHT_HASH   0x5
 
#define SHT_DYNAMIC   0x6
 
#define SHT_NOTE   0x7
 
#define SHT_NOBITS   0x8
 
#define SHT_REL   0x9
 
#define SHT_DYNSYM   0xb
 
#define SHT_INIT_ARRAY   0xe
 
#define SHT_FINI_ARRAY   0xf
 
#define SHT_PREINIT_ARRAY   0x10
 
#define SHF_WRITE   0x1
 
#define SHF_ALLOC   0x2
 
#define SHF_EXECINSTR   0x4
 
#define SHF_MASKPROC   0xf0000000
 
#define PF_X   0x1
 
#define PF_W   0x2
 
#define PF_R   0x4
 
#define PT_NULL   0 /* Program header table entry unused */
 
#define PT_LOAD   1 /* Loadable program segment */
 
#define PT_DYNAMIC   2 /* Dynamic linking information */
 
#define PT_INTERP   3 /* Program interpreter */
 
#define PT_NOTE   4 /* Auxiliary information */
 
#define PT_SHLIB   5 /* Reserved */
 
#define PT_PHDR   6 /* Entry for header table itself */
 
#define PT_TLS   7 /* Thread-local storage segment */
 
#define PT_NUM   8 /* Number of defined types */
 
#define DT_NULL   0 /* Marks end of dynamic section */
 
#define DT_NEEDED   1 /* Name of needed library */
 
#define DT_PLTRELSZ   2 /* Size in bytes of PLT relocs */
 
#define DT_PLTGOT   3 /* Processor defined value */
 
#define DT_HASH   4 /* Address of symbol hash table */
 
#define DT_STRTAB   5 /* Address of string table */
 
#define DT_SYMTAB   6 /* Address of symbol table */
 
#define DT_RELA   7 /* Address of Rela relocs */
 
#define DT_RELASZ   8 /* Total size of Rela relocs */
 
#define DT_RELAENT   9 /* Size of one Rela reloc */
 
#define DT_STRSZ   10 /* Size of string table */
 
#define DT_SYMENT   11 /* Size of one symbol table entry */
 
#define DT_INIT   12 /* Address of init function */
 
#define DT_FINI   13 /* Address of termination function */
 
#define DT_SONAME   14 /* Name of shared object */
 
#define DT_RPATH   15 /* Library search path (deprecated) */
 
#define DT_SYMBOLIC   16 /* Start symbol search here */
 
#define DT_REL   17 /* Address of Rel relocs */
 
#define DT_RELSZ   18 /* Total size of Rel relocs */
 
#define DT_RELENT   19 /* Size of one Rel reloc */
 
#define DT_PLTREL   20 /* Type of reloc in PLT */
 
#define DT_DEBUG   21 /* For debugging; unspecified */
 
#define DT_TEXTREL   22 /* Reloc might modify .text */
 
#define DT_JMPREL   23 /* Address of PLT relocs */
 
#define DT_BIND_NOW   24 /* Process relocations of object */
 
#define DT_INIT_ARRAY   25 /* Array with addresses of init fct */
 
#define DT_FINI_ARRAY   26 /* Array with addresses of fini fct */
 
#define DT_INIT_ARRAYSZ   27 /* Size in bytes of DT_INIT_ARRAY */
 
#define DT_FINI_ARRAYSZ   28 /* Size in bytes of DT_FINI_ARRAY */
 
#define DT_RUNPATH   29 /* Library search path */
 
#define DT_FLAGS   30 /* Flags for the object being loaded */
 
#define DT_ENCODING   32 /* Start of encoded range */
 
#define DT_PREINIT_ARRAY   32 /* Array with addresses of preinit fct*/
 
#define DT_PREINIT_ARRAYSZ   33 /* size in bytes of DT_PREINIT_ARRAY */
 
#define STT_NOTYPE   0
 
#define STT_OBJECT   1
 
#define STT_FUNC   2
 
#define STT_SECTION   3
 
#define STT_FILE   4
 
#define STT_COMMON   5
 
#define STT_TLS   6
 
#define STB_LOCAL   0
 
#define STB_GLOBAL   1
 
#define STB_WEAK   2
 
#define STV_DEFAULT   0
 
#define STV_INTERNAL   1
 
#define STV_HIDDEN   2
 
#define STV_PROTECTED   3
 
#define R_SYM(val)   ((val) >> 32)
 
#define R_TYPE(val)   ((val) &0xffffffffUL)
 
#define ST_BIND(i)   ((i) >> 4)
 
#define ST_TYPE(i)   ((i) &0xf)
 
#define ST_INFO(b, t)   (((b) << 4) + ((t) &0xf))
 
#define ST_TYPEOK(x)   (ST_TYPE((x)) <= STT_FUNC)
 

Typedefs

typedef uint64_t Elf_Addr
 
typedef uint64_t Elf_Off
 
typedef uint16_t Elf_Half
 
typedef uint32_t Elf_Word
 
typedef int32_t Elf_Sword
 
typedef uint64_t Elf_Xword
 
typedef int64_t Elf_Sxword
 
typedef uint32_t Elf32_Addr
 
typedef uint32_t Elf32_Off
 
typedef uint16_t Elf32_Half
 
typedef uint32_t Elf32_Word
 
typedef int32_t Elf32_Sword
 
typedef uint32_t Elf32_Xword
 
typedef int32_t Elf32_Sxword
 

Functions

template const char * Elf::lookupSymbol< Elf::ElfSymbol_t > (uintptr_t addr, uintptr_t *startAddr=0, ElfSymbol_t *symbolTable=0)
 
template const char * Elf::lookupSymbol< Elf::Elf32Symbol_t > (uintptr_t addr, uintptr_t *startAddr=0, Elf32Symbol_t *symbolTable=0)
 

Detailed Description

the kernel linker

the kernel linker

Function Documentation

template const char* Elf::lookupSymbol< Elf::ElfSymbol_t > ( uintptr_t  addr,
uintptr_t *  startAddr = 0,
ElfSymbol_t symbolTable = 0 
)

External specializations for ELF symbol types.