From 7907006903f66356a3f2b6e32ef7fba572c97f25 Mon Sep 17 00:00:00 2001 From: Lyupa Anastasia Date: Mon, 31 Jul 2023 16:52:38 +0300 Subject: [PATCH] [Orc] Disable use of shared memory on OHOS Fix libLLVMOrcJIT build breakage due to use of deprecated shm_open/shm_unlink Issue: https://gitee.com/openharmony/third_party_llvm-project/issues/I7PFP3 Signed-off-by: Lyupa Anastasia --- .../ExecutorSharedMemoryMapperService.h | 3 ++- llvm/lib/ExecutionEngine/Orc/MemoryMapper.cpp | 15 ++++++++++----- .../ExecutorSharedMemoryMapperService.cpp | 9 ++++++--- .../Orc/SharedMemoryMapperTest.cpp | 3 ++- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorSharedMemoryMapperService.h b/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorSharedMemoryMapperService.h index 549a6c096510..5b1f2ecf649d 100644 --- a/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorSharedMemoryMapperService.h +++ b/llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/ExecutorSharedMemoryMapperService.h @@ -66,7 +66,8 @@ private: static llvm::orc::shared::CWrapperFunctionResult releaseWrapper(const char *ArgData, size_t ArgSize); -#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__)) || defined(_WIN32) +// OHOS_LOCAL +#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__) && !defined(__OHOS__)) || defined(_WIN32) std::atomic SharedMemoryCount{0}; #endif diff --git a/llvm/lib/ExecutionEngine/Orc/MemoryMapper.cpp b/llvm/lib/ExecutionEngine/Orc/MemoryMapper.cpp index ee92e5191b50..88265dc86e54 100644 --- a/llvm/lib/ExecutionEngine/Orc/MemoryMapper.cpp +++ b/llvm/lib/ExecutionEngine/Orc/MemoryMapper.cpp @@ -11,7 +11,8 @@ #include "llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h" #include "llvm/Support/WindowsError.h" -#if defined(LLVM_ON_UNIX) && !defined(__ANDROID__) +// OHOS_LOCAL +#if defined(LLVM_ON_UNIX) && !defined(__ANDROID__) && !defined(__OHOS__) #include #include #include @@ -174,14 +175,16 @@ InProcessMemoryMapper::~InProcessMemoryMapper() { SharedMemoryMapper::SharedMemoryMapper(ExecutorProcessControl &EPC, SymbolAddrs SAs, size_t PageSize) : EPC(EPC), SAs(SAs), PageSize(PageSize) { -#if (!defined(LLVM_ON_UNIX) || defined(__ANDROID__)) && !defined(_WIN32) +// OHOS_LOCAL +#if (!defined(LLVM_ON_UNIX) || defined(__ANDROID__) || defined(__OHOS__)) && !defined(_WIN32) llvm_unreachable("SharedMemoryMapper is not supported on this platform yet"); #endif } Expected> SharedMemoryMapper::Create(ExecutorProcessControl &EPC, SymbolAddrs SAs) { -#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__)) || defined(_WIN32) +// OHOS_LOCAL +#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__) && !defined(__OHOS__)) || defined(_WIN32) auto PageSize = sys::Process::getPageSize(); if (!PageSize) return PageSize.takeError(); @@ -196,7 +199,8 @@ SharedMemoryMapper::Create(ExecutorProcessControl &EPC, SymbolAddrs SAs) { void SharedMemoryMapper::reserve(size_t NumBytes, OnReservedFunction OnReserved) { -#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__)) || defined(_WIN32) +// OHOS_LOCAL +#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__) && !defined(__OHOS__)) || defined(_WIN32) EPC.callSPSWrapperAsync< rt::SPSExecutorSharedMemoryMapperServiceReserveSignature>( @@ -344,7 +348,8 @@ void SharedMemoryMapper::deinitialize( void SharedMemoryMapper::release(ArrayRef Bases, OnReleasedFunction OnReleased) { -#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__)) || defined(_WIN32) +// OHOS_LOCAL +#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__) && !defined(__OHOS__)) || defined(_WIN32) Error Err = Error::success(); { diff --git a/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorSharedMemoryMapperService.cpp b/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorSharedMemoryMapperService.cpp index caa191cea899..6bd633b0be72 100644 --- a/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorSharedMemoryMapperService.cpp +++ b/llvm/lib/ExecutionEngine/Orc/TargetProcess/ExecutorSharedMemoryMapperService.cpp @@ -52,7 +52,8 @@ namespace rt_bootstrap { Expected> ExecutorSharedMemoryMapperService::reserve(uint64_t Size) { -#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__)) || defined(_WIN32) +// OHOS_LOCAL +#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__) && !defined(__OHOS__)) || defined(_WIN32) #if defined(LLVM_ON_UNIX) @@ -125,7 +126,8 @@ ExecutorSharedMemoryMapperService::reserve(uint64_t Size) { Expected ExecutorSharedMemoryMapperService::initialize( ExecutorAddr Reservation, tpctypes::SharedMemoryFinalizeRequest &FR) { -#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__)) || defined(_WIN32) +// OHOS_LOCAL +#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__) && !defined(__OHOS__)) || defined(_WIN32) ExecutorAddr MinAddr(~0ULL); @@ -207,7 +209,8 @@ Error ExecutorSharedMemoryMapperService::deinitialize( Error ExecutorSharedMemoryMapperService::release( const std::vector &Bases) { -#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__)) || defined(_WIN32) +// OHOS_LOCAL +#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__) && !defined(__OHOS__)) || defined(_WIN32) Error Err = Error::success(); for (auto Base : Bases) { diff --git a/llvm/unittests/ExecutionEngine/Orc/SharedMemoryMapperTest.cpp b/llvm/unittests/ExecutionEngine/Orc/SharedMemoryMapperTest.cpp index 9f44184ccc77..4c9d31a3a381 100644 --- a/llvm/unittests/ExecutionEngine/Orc/SharedMemoryMapperTest.cpp +++ b/llvm/unittests/ExecutionEngine/Orc/SharedMemoryMapperTest.cpp @@ -18,7 +18,8 @@ using namespace llvm::orc; using namespace llvm::orc::shared; using namespace llvm::orc::rt_bootstrap; -#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__)) || defined(_WIN32) +// OHOS_LOCAL +#if (defined(LLVM_ON_UNIX) && !defined(__ANDROID__) && !defined(__OHOS__)) || defined(_WIN32) // A basic function to be used as both initializer/deinitializer orc::shared::CWrapperFunctionResult incrementWrapper(const char *ArgData, -- Gitee