diff options
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp | 66 |
1 files changed, 19 insertions, 47 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp b/llvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp index aff7296cb6e3..4a408d61ee38 100644 --- a/llvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp +++ b/llvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp @@ -23,7 +23,7 @@ using namespace llvm; using namespace llvm::orc; -using namespace llvm::orc::tpctypes; +using namespace llvm::orc::shared; namespace llvm { namespace orc { @@ -155,54 +155,26 @@ Error deregisterEHFrameSection(const void *EHFrameSectionAddr, } // end namespace orc } // end namespace llvm -extern "C" CWrapperFunctionResult -llvm_orc_registerEHFrameSectionWrapper(uint8_t *Data, uint64_t Size) { - if (Size != sizeof(uint64_t) + sizeof(uint64_t)) - return WrapperFunctionResult::from( - "Invalid arguments to llvm_orc_registerEHFrameSectionWrapper") - .release(); - - uint64_t EHFrameSectionAddr; - uint64_t EHFrameSectionSize; - - { - BinaryStreamReader ArgReader(ArrayRef<uint8_t>(Data, Size), - support::endianness::big); - cantFail(ArgReader.readInteger(EHFrameSectionAddr)); - cantFail(ArgReader.readInteger(EHFrameSectionSize)); - } +static Error registerEHFrameWrapper(JITTargetAddress Addr, uint64_t Size) { + return llvm::orc::registerEHFrameSection( + jitTargetAddressToPointer<const void *>(Addr), Size); +} - if (auto Err = registerEHFrameSection( - jitTargetAddressToPointer<void *>(EHFrameSectionAddr), - EHFrameSectionSize)) { - auto ErrMsg = toString(std::move(Err)); - return WrapperFunctionResult::from(ErrMsg).release(); - } - return WrapperFunctionResult().release(); +static Error deregisterEHFrameWrapper(JITTargetAddress Addr, uint64_t Size) { + return llvm::orc::deregisterEHFrameSection( + jitTargetAddressToPointer<const void *>(Addr), Size); } -extern "C" CWrapperFunctionResult -llvm_orc_deregisterEHFrameSectionWrapper(uint8_t *Data, uint64_t Size) { - if (Size != sizeof(uint64_t) + sizeof(uint64_t)) - return WrapperFunctionResult::from( - "Invalid arguments to llvm_orc_registerEHFrameSectionWrapper") - .release(); - - uint64_t EHFrameSectionAddr; - uint64_t EHFrameSectionSize; - - { - BinaryStreamReader ArgReader(ArrayRef<uint8_t>(Data, Size), - support::endianness::big); - cantFail(ArgReader.readInteger(EHFrameSectionAddr)); - cantFail(ArgReader.readInteger(EHFrameSectionSize)); - } +extern "C" orc::shared::detail::CWrapperFunctionResult +llvm_orc_registerEHFrameSectionWrapper(const char *Data, uint64_t Size) { + return WrapperFunction<SPSError(SPSExecutorAddress, uint64_t)>::handle( + Data, Size, registerEHFrameWrapper) + .release(); +} - if (auto Err = deregisterEHFrameSection( - jitTargetAddressToPointer<void *>(EHFrameSectionAddr), - EHFrameSectionSize)) { - auto ErrMsg = toString(std::move(Err)); - return WrapperFunctionResult::from(ErrMsg).release(); - } - return WrapperFunctionResult().release(); +extern "C" orc::shared::detail::CWrapperFunctionResult +llvm_orc_deregisterEHFrameSectionWrapper(const char *Data, uint64_t Size) { + return WrapperFunction<SPSError(SPSExecutorAddress, uint64_t)>::handle( + Data, Size, deregisterEHFrameWrapper) + .release(); } |