aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp')
-rw-r--r--llvm/lib/ExecutionEngine/Orc/TargetProcess/RegisterEHFrames.cpp66
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();
}