Skip to content

Commit

Permalink
Port lli bug fix from r166920 to MCJIT unit test.
Browse files Browse the repository at this point in the history
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167145 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
aemerson committed Oct 31, 2012
1 parent 9f74bc9 commit a25ad19
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions unittests/ExecutionEngine/MCJIT/SectionMemoryManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

#include "llvm/Config/config.h"
#include "llvm/Support/DynamicLibrary.h"
#include "llvm/Support/MathExtras.h"

#include "SectionMemoryManager.h"

Expand All @@ -34,9 +35,16 @@ uint8_t *SectionMemoryManager::allocateDataSection(uintptr_t Size,
unsigned SectionID) {
if (!Alignment)
Alignment = 16;
uint8_t *Addr = (uint8_t*)calloc((Size + Alignment - 1)/Alignment, Alignment);
AllocatedDataMem.push_back(sys::MemoryBlock(Addr, Size));
return Addr;
// Ensure that enough memory is requested to allow aligning.
size_t NumElementsAligned = 1 + (Size + Alignment - 1)/Alignment;
uint8_t *Addr = (uint8_t*)calloc(NumElementsAligned, Alignment);

// Honour the alignment requirement.
uint8_t *AlignedAddr = (uint8_t*)RoundUpToAlignment((uint64_t)Addr, Alignment);

// Store the original address from calloc so we can free it later.
AllocatedDataMem.push_back(sys::MemoryBlock(Addr, NumElementsAligned*Alignment));
return AlignedAddr;
}

uint8_t *SectionMemoryManager::allocateCodeSection(uintptr_t Size,
Expand Down

0 comments on commit a25ad19

Please sign in to comment.