15 #ifndef LLVM_EXECUTIONENGINE_SECTIONMEMORYMANAGER_H
16 #define LLVM_EXECUTIONENGINE_SECTIONMEMORYMANAGER_H
60 unsigned SectionID,
StringRef SectionName,
61 bool isReadOnly)
override;
92 uint8_t *allocateSection(MemoryGroup &MemGroup, uintptr_t Size,
95 std::error_code applyMemoryGroupPermissions(MemoryGroup &MemGroup,
96 unsigned Permissions);
99 MemoryGroup RWDataMem;
100 MemoryGroup RODataMem;
105 #endif // LLVM_EXECUTION_ENGINE_SECTION_MEMORY_MANAGER_H
~SectionMemoryManager() override
virtual void invalidateInstructionCache()
Invalidate instruction cache for code sections.
uint8_t * allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID, StringRef SectionName) override
Allocates a memory block of (at least) the given size suitable for executable code.
uint8_t * allocateDataSection(uintptr_t Size, unsigned Alignment, unsigned SectionID, StringRef SectionName, bool isReadOnly) override
Allocates a memory block of (at least) the given size suitable for executable code.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
This class encapsulates the notion of a memory block which has an address and a size.
bool finalizeMemory(std::string *ErrMsg=nullptr) override
Update section-specific memory permissions and other attributes.
This is a simple memory manager which implements the methods called by the RuntimeDyld class to alloc...
StringRef - Represent a constant reference to a string, i.e.