1 //===-------------- MapperJITLinkMemoryManagerTest.cpp ----------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "OrcTestCommon.h" 10 11 #include "llvm/ExecutionEngine/Orc/MapperJITLinkMemoryManager.h" 12 13 #include "llvm/Testing/Support/Error.h" 14 15 #include <vector> 16 17 using namespace llvm; 18 using namespace llvm::jitlink; 19 using namespace llvm::orc; 20 using namespace llvm::orc::shared; 21 22 namespace { 23 24 TEST(MapperJITLinkMemoryManagerTest, InProcess) { 25 auto MemMgr = cantFail( 26 MapperJITLinkMemoryManager::CreateWithMapper<InProcessMemoryMapper>()); 27 28 StringRef Hello = "hello"; 29 auto SSA = jitlink::SimpleSegmentAlloc::Create( 30 *MemMgr, nullptr, {{jitlink::MemProt::Read, {Hello.size(), Align(1)}}}); 31 EXPECT_THAT_EXPECTED(SSA, Succeeded()); 32 auto SegInfo = SSA->getSegInfo(jitlink::MemProt::Read); 33 memcpy(SegInfo.WorkingMem.data(), Hello.data(), Hello.size()); 34 35 auto FA = SSA->finalize(); 36 EXPECT_THAT_EXPECTED(FA, Succeeded()); 37 38 ExecutorAddr TargetAddr(SegInfo.Addr); 39 40 const char *TargetMem = TargetAddr.toPtr<const char *>(); 41 StringRef TargetHello(TargetMem, Hello.size()); 42 EXPECT_EQ(Hello, TargetHello); 43 44 auto Err2 = MemMgr->deallocate(std::move(*FA)); 45 EXPECT_THAT_ERROR(std::move(Err2), Succeeded()); 46 } 47 48 } // namespace 49