diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2025-02-03 18:51:27 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2025-02-03 18:51:27 +0000 |
| commit | 32a711e1c447004eb1fd015925f305ed1d8426de (patch) | |
| tree | 6647b84917053748367f573f9bdc66e809cb17f5 /llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp | |
| parent | ac9a064cb179f3425b310fa2847f8764ac970a4d (diff) | |
Vendor import of llvm-project main llvmorg-20-init-19504-g8c2574832ed2,vendor/llvm-project/llvmorg-20-init-19504-g8c2574832ed2vendor/llvm-project/main
the last commit before the upstream release/20.x branch was created.
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp')
| -rw-r--r-- | llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp b/llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp index b38877955282..d88fbbfc8638 100644 --- a/llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp +++ b/llvm/lib/ExecutionEngine/Orc/TargetProcess/OrcRTBootstrap.cpp @@ -46,6 +46,18 @@ writeBuffersWrapper(const char *ArgData, size_t ArgSize) { } static llvm::orc::shared::CWrapperFunctionResult +writePointersWrapper(const char *ArgData, size_t ArgSize) { + return WrapperFunction<void(SPSSequence<SPSMemoryAccessPointerWrite>)>:: + handle(ArgData, ArgSize, + [](std::vector<tpctypes::PointerWrite> Ws) { + for (auto &W : Ws) + *W.Addr.template toPtr<void **>() = + W.Value.template toPtr<void *>(); + }) + .release(); +} + +static llvm::orc::shared::CWrapperFunctionResult runAsMainWrapper(const char *ArgData, size_t ArgSize) { return WrapperFunction<rt::SPSRunAsMainSignature>::handle( ArgData, ArgSize, @@ -92,6 +104,8 @@ void addTo(StringMap<ExecutorAddr> &M) { shared::SPSMemoryAccessUInt64Write>); M[rt::MemoryWriteBuffersWrapperName] = ExecutorAddr::fromPtr(&writeBuffersWrapper); + M[rt::MemoryWritePointersWrapperName] = + ExecutorAddr::fromPtr(&writePointersWrapper); M[rt::RegisterEHFrameSectionWrapperName] = ExecutorAddr::fromPtr(&llvm_orc_registerEHFrameSectionWrapper); M[rt::DeregisterEHFrameSectionWrapperName] = |
