diff options
author | Lang Hames <lhames@gmail.com> | 2013-12-07 04:25:19 +0000 |
---|---|---|
committer | Lang Hames <lhames@gmail.com> | 2013-12-07 04:25:19 +0000 |
commit | a49701db7d54967aea8a511743fedcfb9b056eea (patch) | |
tree | dab70cd2963ff5ea01065de2243e1ed0b2363c03 /lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp | |
parent | d4ef813fd5efc03775fea5694b06c126e429de2d (diff) | |
download | llvm-a49701db7d54967aea8a511743fedcfb9b056eea.tar.gz llvm-a49701db7d54967aea8a511743fedcfb9b056eea.tar.bz2 llvm-a49701db7d54967aea8a511743fedcfb9b056eea.tar.xz |
Revert r196639 while I investigate a bot failure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196641 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp')
-rw-r--r-- | lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp | 34 |
1 files changed, 3 insertions, 31 deletions
diff --git a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp index 800a75ef7e..161135a4f8 100644 --- a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp +++ b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp @@ -82,24 +82,12 @@ ObjectImage *RuntimeDyldImpl::createObjectImage(ObjectBuffer *InputBuffer) { return new ObjectImageCommon(InputBuffer); } -ObjectImage *RuntimeDyldImpl::createObjectImageFromFile(ObjectFile *InputObject) { - return new ObjectImageCommon(InputObject); -} - -ObjectImage *RuntimeDyldImpl::loadObject(ObjectFile *InputObject) { - return loadObject(createObjectImageFromFile(InputObject)); -} - ObjectImage *RuntimeDyldImpl::loadObject(ObjectBuffer *InputBuffer) { - return loadObject(createObjectImage(InputBuffer)); -} - -ObjectImage *RuntimeDyldImpl::loadObject(ObjectImage *InputObject) { MutexGuard locked(lock); - OwningPtr<ObjectImage> obj(InputObject); + OwningPtr<ObjectImage> obj(createObjectImage(InputBuffer)); if (!obj) - return NULL; + report_fatal_error("Unable to create object image from memory buffer!"); // Save information about our target Arch = (Triple::ArchType)obj->getArch(); @@ -151,7 +139,7 @@ ObjectImage *RuntimeDyldImpl::loadObject(ObjectImage *InputObject) { if (si == obj->end_sections()) continue; Check(si->getContents(SectionData)); Check(si->isText(IsCode)); - const uint8_t* SymPtr = (const uint8_t*)InputObject->getData().data() + + const uint8_t* SymPtr = (const uint8_t*)InputBuffer->getBufferStart() + (uintptr_t)FileOffset; uintptr_t SectOffset = (uintptr_t)(SymPtr - (const uint8_t*)SectionData.begin()); @@ -575,22 +563,6 @@ RuntimeDyld::~RuntimeDyld() { delete Dyld; } -ObjectImage *RuntimeDyld::loadObject(ObjectFile *InputObject) { - if (!Dyld) { - if (InputObject->isELF()) - Dyld = new RuntimeDyldELF(MM); - else if (InputObject->isMachO()) - Dyld = new RuntimeDyldMachO(MM); - else - report_fatal_error("Incompatible object format!"); - } else { - if (!Dyld->isCompatibleFile(InputObject)) - report_fatal_error("Incompatible object format!"); - } - - return Dyld->loadObject(InputObject); -} - ObjectImage *RuntimeDyld::loadObject(ObjectBuffer *InputBuffer) { if (!Dyld) { sys::fs::file_magic Type = |