[Lldb-commits] [lldb] r218383 - Adjust to LLVM JIT API change
Todd Fiala
todd.fiala at gmail.com
Wed Sep 24 08:55:47 PDT 2014
Author: tfiala
Date: Wed Sep 24 10:55:47 2014
New Revision: 218383
URL: http://llvm.org/viewvc/llvm-project?rev=218383&view=rev
Log:
Adjust to LLVM JIT API change
Those wrapper functions seems not used by lldb... Removed
Reference for
replacing JITMemoryManager with SectionMemoryManager
replacing "llvm::JITMemoryManager::CreateDefaultMemManager()" with "new llvm::SectionMemoryManager()"
http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-jitlistener/llvm-jitlistener.cpp?r1=218316&r2=218315&pathrev=218316
Change by Tong Shen.
Tested:
Ubuntu 14.04 x86_64
MacOSX 10.9.5 with Xcode Version 6.1 (6A1030) (Beta)
Modified:
lldb/trunk/include/lldb/Expression/ClangUserExpression.h
lldb/trunk/include/lldb/Expression/IRExecutionUnit.h
lldb/trunk/source/Expression/IRExecutionUnit.cpp
Modified: lldb/trunk/include/lldb/Expression/ClangUserExpression.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/ClangUserExpression.h?rev=218383&r1=218382&r2=218383&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Expression/ClangUserExpression.h (original)
+++ lldb/trunk/include/lldb/Expression/ClangUserExpression.h Wed Sep 24 10:55:47 2014
@@ -30,8 +30,6 @@
#include "lldb/Symbol/TaggedASTType.h"
#include "lldb/Target/ExecutionContext.h"
-#include "llvm/ExecutionEngine/JITMemoryManager.h"
-
namespace lldb_private
{
Modified: lldb/trunk/include/lldb/Expression/IRExecutionUnit.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Expression/IRExecutionUnit.h?rev=218383&r1=218382&r2=218383&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Expression/IRExecutionUnit.h (original)
+++ lldb/trunk/include/lldb/Expression/IRExecutionUnit.h Wed Sep 24 10:55:47 2014
@@ -25,7 +25,7 @@
#include "lldb/lldb-private.h"
#include "lldb/Core/ClangForward.h"
#include "lldb/Core/DataBufferHeap.h"
-#include "llvm/ExecutionEngine/JITMemoryManager.h"
+#include "llvm/ExecutionEngine/SectionMemoryManager.h"
#include "lldb/Expression/ClangExpression.h"
#include "lldb/Expression/ClangExpressionParser.h"
#include "lldb/Expression/IRMemoryMap.h"
@@ -56,7 +56,7 @@ class Error;
/// then be used as input to the IR interpreter, or the address of the
/// executable code can be passed to a thread plan to run in the target.
///
-/// This class creates a subclass of LLVM's JITMemoryManager, because that is
+/// This class creates a subclass of LLVM's SectionMemoryManager, because that is
/// how the JIT emits code. Because LLDB needs to move JIT-compiled code
/// into the target process, the IRExecutionUnit knows how to copy the
/// emitted code into the target process.
@@ -207,101 +207,12 @@ private:
DisassembleFunction (Stream &stream,
lldb::ProcessSP &process_sp);
- class MemoryManager : public llvm::JITMemoryManager
+ class MemoryManager : public llvm::SectionMemoryManager
{
public:
MemoryManager (IRExecutionUnit &parent);
virtual ~MemoryManager();
- //------------------------------------------------------------------
- /// Passthrough interface stub
- //------------------------------------------------------------------
- virtual void setMemoryWritable ();
-
- //------------------------------------------------------------------
- /// Passthrough interface stub
- //------------------------------------------------------------------
- virtual void setMemoryExecutable ();
-
- //------------------------------------------------------------------
- /// Passthrough interface stub
- //------------------------------------------------------------------
- virtual void setPoisonMemory (bool poison)
- {
- m_default_mm_ap->setPoisonMemory (poison);
- }
-
- //------------------------------------------------------------------
- /// Passthrough interface stub
- //------------------------------------------------------------------
- virtual void AllocateGOT()
- {
- m_default_mm_ap->AllocateGOT();
- }
-
- //------------------------------------------------------------------
- /// Passthrough interface stub
- //------------------------------------------------------------------
- virtual uint8_t *getGOTBase() const
- {
- return m_default_mm_ap->getGOTBase();
- }
-
- //------------------------------------------------------------------
- /// Passthrough interface stub
- //------------------------------------------------------------------
- virtual uint8_t *startFunctionBody(const llvm::Function *F,
- uintptr_t &ActualSize);
-
- //------------------------------------------------------------------
- /// Allocate room for a dyld stub for a lazy-referenced function,
- /// and add it to the m_stubs map
- ///
- /// @param[in] F
- /// The function being referenced.
- ///
- /// @param[in] StubSize
- /// The size of the stub.
- ///
- /// @param[in] Alignment
- /// The required alignment of the stub.
- ///
- /// @return
- /// Allocated space for the stub.
- //------------------------------------------------------------------
- virtual uint8_t *allocateStub(const llvm::GlobalValue* F,
- unsigned StubSize,
- unsigned Alignment);
-
- //------------------------------------------------------------------
- /// Complete the body of a function, and add it to the m_functions map
- ///
- /// @param[in] F
- /// The function being completed.
- ///
- /// @param[in] FunctionStart
- /// The first instruction of the function.
- ///
- /// @param[in] FunctionEnd
- /// The last byte of the last instruction of the function.
- //------------------------------------------------------------------
- virtual void endFunctionBody(const llvm::Function *F,
- uint8_t *FunctionStart,
- uint8_t *FunctionEnd);
- //------------------------------------------------------------------
- /// Allocate space for an unspecified purpose, and add it to the
- /// m_spaceBlocks map
- ///
- /// @param[in] Size
- /// The size of the area.
- ///
- /// @param[in] Alignment
- /// The required alignment of the area.
- ///
- /// @return
- /// Allocated space.
- //------------------------------------------------------------------
- virtual uint8_t *allocateSpace(intptr_t Size, unsigned Alignment);
//------------------------------------------------------------------
/// Allocate space for executable code, and add it to the
@@ -347,22 +258,6 @@ private:
bool IsReadOnly);
//------------------------------------------------------------------
- /// Allocate space for a global variable, and add it to the
- /// m_spaceBlocks map
- ///
- /// @param[in] Size
- /// The size of the variable.
- ///
- /// @param[in] Alignment
- /// The required alignment of the variable.
- ///
- /// @return
- /// Allocated space for the global.
- //------------------------------------------------------------------
- virtual uint8_t *allocateGlobal(uintptr_t Size,
- unsigned Alignment);
-
- //------------------------------------------------------------------
/// Called when object loading is complete and section page
/// permissions can be applied. Currently unimplemented for LLDB.
///
@@ -380,50 +275,6 @@ private:
return false;
}
- //------------------------------------------------------------------
- /// Passthrough interface stub
- //------------------------------------------------------------------
- virtual void deallocateFunctionBody(void *Body);
-
- //------------------------------------------------------------------
- /// Passthrough interface stub
- //------------------------------------------------------------------
- virtual size_t GetDefaultCodeSlabSize() {
- return m_default_mm_ap->GetDefaultCodeSlabSize();
- }
-
- //------------------------------------------------------------------
- /// Passthrough interface stub
- //------------------------------------------------------------------
- virtual size_t GetDefaultDataSlabSize() {
- return m_default_mm_ap->GetDefaultDataSlabSize();
- }
-
- virtual size_t GetDefaultStubSlabSize() {
- return m_default_mm_ap->GetDefaultStubSlabSize();
- }
-
- //------------------------------------------------------------------
- /// Passthrough interface stub
- //------------------------------------------------------------------
- virtual unsigned GetNumCodeSlabs() {
- return m_default_mm_ap->GetNumCodeSlabs();
- }
-
- //------------------------------------------------------------------
- /// Passthrough interface stub
- //------------------------------------------------------------------
- virtual unsigned GetNumDataSlabs() {
- return m_default_mm_ap->GetNumDataSlabs();
- }
-
- //------------------------------------------------------------------
- /// Passthrough interface stub
- //------------------------------------------------------------------
- virtual unsigned GetNumStubSlabs() {
- return m_default_mm_ap->GetNumStubSlabs();
- }
-
virtual void registerEHFrames(uint8_t *Addr, uint64_t LoadAddr, size_t Size) {
return m_default_mm_ap->registerEHFrames(Addr, LoadAddr, Size);
}
@@ -436,7 +287,7 @@ private:
return m_default_mm_ap->getPointerToNamedFunction(Name, AbortOnFailure);
}
private:
- std::unique_ptr<JITMemoryManager> m_default_mm_ap; ///< The memory allocator to use in actually creating space. All calls are passed through to it.
+ std::unique_ptr<SectionMemoryManager> m_default_mm_ap; ///< The memory allocator to use in actually creating space. All calls are passed through to it.
IRExecutionUnit &m_parent; ///< The execution unit this is a proxy for.
};
Modified: lldb/trunk/source/Expression/IRExecutionUnit.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/IRExecutionUnit.cpp?rev=218383&r1=218382&r2=218383&view=diff
==============================================================================
--- lldb/trunk/source/Expression/IRExecutionUnit.cpp (original)
+++ lldb/trunk/source/Expression/IRExecutionUnit.cpp Wed Sep 24 10:55:47 2014
@@ -300,7 +300,7 @@ IRExecutionUnit::GetRunnableInfo(Error &
builder.setEngineKind(llvm::EngineKind::JIT)
.setErrorStr(&error_string)
.setRelocationModel(relocModel)
- .setJITMemoryManager(new MemoryManager(*this))
+ .setMCJITMemoryManager(new MemoryManager(*this))
.setCodeModel(codeModel)
.setOptLevel(llvm::CodeGenOpt::Less);
@@ -423,7 +423,7 @@ IRExecutionUnit::~IRExecutionUnit ()
}
IRExecutionUnit::MemoryManager::MemoryManager (IRExecutionUnit &parent) :
- m_default_mm_ap (llvm::JITMemoryManager::CreateDefaultMemManager()),
+ m_default_mm_ap (new llvm::SectionMemoryManager()),
m_parent (parent)
{
}
@@ -431,60 +431,6 @@ IRExecutionUnit::MemoryManager::MemoryMa
IRExecutionUnit::MemoryManager::~MemoryManager ()
{
}
-void
-IRExecutionUnit::MemoryManager::setMemoryWritable ()
-{
- m_default_mm_ap->setMemoryWritable();
-}
-
-void
-IRExecutionUnit::MemoryManager::setMemoryExecutable ()
-{
- m_default_mm_ap->setMemoryExecutable();
-}
-
-
-uint8_t *
-IRExecutionUnit::MemoryManager::startFunctionBody(const llvm::Function *F,
- uintptr_t &ActualSize)
-{
- return m_default_mm_ap->startFunctionBody(F, ActualSize);
-}
-
-uint8_t *
-IRExecutionUnit::MemoryManager::allocateStub(const llvm::GlobalValue* F,
- unsigned StubSize,
- unsigned Alignment)
-{
- Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
-
- uint8_t *return_value = m_default_mm_ap->allocateStub(F, StubSize, Alignment);
-
- m_parent.m_records.push_back(AllocationRecord((uintptr_t)return_value,
- lldb::ePermissionsReadable | lldb::ePermissionsWritable,
- GetSectionTypeFromSectionName (llvm::StringRef(), AllocationKind::Stub),
- StubSize,
- Alignment,
- eSectionIDInvalid,
- NULL));
-
- if (log)
- {
- log->Printf("IRExecutionUnit::allocateStub (F=%p, StubSize=%u, Alignment=%u) = %p",
- static_cast<const void*>(F), StubSize, Alignment,
- static_cast<void*>(return_value));
- }
-
- return return_value;
-}
-
-void
-IRExecutionUnit::MemoryManager::endFunctionBody(const llvm::Function *F,
- uint8_t *FunctionStart,
- uint8_t *FunctionEnd)
-{
- m_default_mm_ap->endFunctionBody(F, FunctionStart, FunctionEnd);
-}
lldb::SectionType
IRExecutionUnit::GetSectionTypeFromSectionName (const llvm::StringRef &name, IRExecutionUnit::AllocationKind alloc_kind)
@@ -596,30 +542,6 @@ IRExecutionUnit::GetSectionTypeFromSecti
}
uint8_t *
-IRExecutionUnit::MemoryManager::allocateSpace(intptr_t Size, unsigned Alignment)
-{
- Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
-
- uint8_t *return_value = m_default_mm_ap->allocateSpace(Size, Alignment);
-
- m_parent.m_records.push_back(AllocationRecord((uintptr_t)return_value,
- lldb::ePermissionsReadable | lldb::ePermissionsWritable,
- GetSectionTypeFromSectionName (llvm::StringRef(), AllocationKind::Bytes),
- Size,
- Alignment,
- eSectionIDInvalid,
- NULL));
-
- if (log)
- {
- log->Printf("IRExecutionUnit::allocateSpace(Size=%" PRIu64 ", Alignment=%u) = %p",
- (uint64_t)Size, Alignment, return_value);
- }
-
- return return_value;
-}
-
-uint8_t *
IRExecutionUnit::MemoryManager::allocateCodeSection(uintptr_t Size,
unsigned Alignment,
unsigned SectionID,
@@ -673,37 +595,6 @@ IRExecutionUnit::MemoryManager::allocate
return return_value;
}
-uint8_t *
-IRExecutionUnit::MemoryManager::allocateGlobal(uintptr_t Size,
- unsigned Alignment)
-{
- Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
-
- uint8_t *return_value = m_default_mm_ap->allocateGlobal(Size, Alignment);
-
- m_parent.m_records.push_back(AllocationRecord((uintptr_t)return_value,
- lldb::ePermissionsReadable | lldb::ePermissionsWritable,
- GetSectionTypeFromSectionName (llvm::StringRef(), AllocationKind::Global),
- Size,
- Alignment,
- eSectionIDInvalid,
- NULL));
-
- if (log)
- {
- log->Printf("IRExecutionUnit::allocateGlobal(Size=0x%" PRIx64 ", Alignment=%u) = %p",
- (uint64_t)Size, Alignment, return_value);
- }
-
- return return_value;
-}
-
-void
-IRExecutionUnit::MemoryManager::deallocateFunctionBody(void *Body)
-{
- m_default_mm_ap->deallocateFunctionBody(Body);
-}
-
lldb::addr_t
IRExecutionUnit::GetRemoteAddressForLocal (lldb::addr_t local_address)
{
More information about the lldb-commits
mailing list