X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FExecutionEngine%2FRuntimeDyld.h;h=724b9f09e0e5120f1b73bb525b5aec1ed5acc960;hb=439661395fd2a2a832dba01c65bc88718528313c;hp=6e18c7cfca52e97afb62a16ceb469c90878b218f;hpb=53c5e7b2e7e36d70bd943cb2d576121435bd5b3f;p=oota-llvm.git diff --git a/include/llvm/ExecutionEngine/RuntimeDyld.h b/include/llvm/ExecutionEngine/RuntimeDyld.h index 6e18c7cfca5..724b9f09e0e 100644 --- a/include/llvm/ExecutionEngine/RuntimeDyld.h +++ b/include/llvm/ExecutionEngine/RuntimeDyld.h @@ -38,12 +38,12 @@ public: // Allocate ActualSize bytes, or more, for the named function. Return // a pointer to the allocated memory and update Size to reflect how much // memory was acutally allocated. - virtual uint64_t startFunctionBody(const char *Name, uintptr_t &Size) = 0; + virtual uint8_t *startFunctionBody(const char *Name, uintptr_t &Size) = 0; // Mark the end of the function, including how much of the allocated // memory was actually used. - virtual void endFunctionBody(const char *Name, uint64_t FunctionStart, - uint64_t FunctionEnd) = 0; + virtual void endFunctionBody(const char *Name, uint8_t *FunctionStart, + uint8_t *FunctionEnd) = 0; }; class RuntimeDyld { @@ -53,16 +53,21 @@ class RuntimeDyld { // RuntimeDyldImpl is the actual class. RuntimeDyld is just the public // interface. RuntimeDyldImpl *Dyld; + RTDyldMemoryManager *MM; public: RuntimeDyld(RTDyldMemoryManager*); ~RuntimeDyld(); bool loadObject(MemoryBuffer *InputBuffer); - uint64_t getSymbolAddress(StringRef Name); - void reassignSymbolAddress(StringRef Name, uint64_t Addr); - // FIXME: Should be parameterized to get the memory block associated with - // a particular loaded object. - sys::MemoryBlock getMemoryBlock(); + // Get the address of our local copy of the symbol. This may or may not + // be the address used for relocation (clients can copy the data around + // and resolve relocatons based on where they put it). + void *getSymbolAddress(StringRef Name); + // Resolve the relocations for all symbols we currently know about. + void resolveRelocations(); + // Change the address associated with a symbol when resolving relocations. + // Any relocations already associated with the symbol will be re-resolved. + void reassignSymbolAddress(StringRef Name, uint8_t *Addr); StringRef getErrorString(); };