20 #ifndef DYNAMIC_LINKER_H 21 #define DYNAMIC_LINKER_H 23 #include "pedigree/kernel/compiler.h" 24 #include "pedigree/kernel/processor/PageFaultHandler.h" 25 #include "pedigree/kernel/processor/state_forward.h" 26 #include "pedigree/kernel/processor/types.h" 28 #include "pedigree/kernel/utilities/String.h" 29 #include "pedigree/kernel/utilities/Tree.h" 52 return loadProgram(pFile,
true,
true, &actualFilename);
59 return loadProgram(pFile,
true);
67 File *pFile,
bool bDryRun =
false,
bool bInterpreter =
false,
74 bool loadObject(
File *pFile,
bool bDryRun =
false);
78 static uintptr_t resolvePlt(SyscallState &state);
83 bool trap(uintptr_t address);
92 uintptr_t resolve(
String name);
103 : elf(e), file(f), buffer(b), address(a), size(s)
113 uintptr_t resolvePltSymbol(uintptr_t libraryId, uintptr_t symIdx);
115 void initPlt(
Elf *pElf, uintptr_t value);
118 uintptr_t m_ProgramStart;
119 size_t m_ProgramSize;
120 uintptr_t m_ProgramBuffer;
141 virtual bool trap(InterruptState &state, uintptr_t address,
bool bIsWrite);
static DLTrapHandler & instance()
bool checkDependencies(File *pFile)
bool checkInterpreter(File *pFile, String &actualFilename)
Implements a Radix Tree, a kind of Trie with compressed keys.