1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00

[ORC] Add a C API function to set the ExecutionSession error reporter.

This commit is contained in:
Lang Hames 2020-10-01 11:24:34 -07:00
parent ac29437d5b
commit effa9c6dc7
2 changed files with 26 additions and 1 deletions

View File

@ -46,9 +46,14 @@ typedef struct LLVMOrcOpaqueExecutionSession *LLVMOrcExecutionSessionRef;
/**
* A reference to an orc::SymbolStringPool table entry.
*/
typedef struct LLVMOrcQuaqueSymbolStringPoolEntryPtr
typedef struct LLVMOrcOpaqueSymbolStringPoolEntry
*LLVMOrcSymbolStringPoolEntryRef;
/**
* Error reporter function.
*/
typedef void (*LLVMOrcErrorReporterFunction)(void *Ctx, LLVMErrorRef Err);
/**
* A reference to an orc::JITDylib instance.
*/
@ -92,6 +97,19 @@ typedef struct LLVMOrcOpaqueLLJITBuilder *LLVMOrcLLJITBuilderRef;
*/
typedef struct LLVMOrcOpaqueLLJIT *LLVMOrcLLJITRef;
/**
* Attach a custom error reporter function to the ExecutionSession.
*
* The error reporter will be called to deliver failure notices that can not be
* directly reported to a caller. For example, failure to resolve symbols in
* the JIT linker is typically reported via the error reporter (callers
* requesting definitions from the JIT will typically be delivered a
* FailureToMaterialize error instead).
*/
void LLVMOrcExecutionSessionSetErrorReporter(
LLVMOrcExecutionSessionRef ES, LLVMOrcErrorReporterFunction ReportError,
void *Ctx);
/**
* Intern a string in the ExecutionSession's SymbolStringPool and return a
* reference to it. This increments the ref-count of the pool entry, and the

View File

@ -58,6 +58,13 @@ DEFINE_SIMPLE_CONVERSION_FUNCTIONS(LLJIT, LLVMOrcLLJITRef)
DEFINE_SIMPLE_CONVERSION_FUNCTIONS(TargetMachine, LLVMTargetMachineRef)
void LLVMOrcExecutionSessionSetErrorReporter(
LLVMOrcExecutionSessionRef ES, LLVMOrcErrorReporterFunction ReportError,
void *Ctx) {
unwrap(ES)->setErrorReporter(
[=](Error Err) { ReportError(Ctx, wrap(std::move(Err))); });
}
LLVMOrcSymbolStringPoolEntryRef
LLVMOrcExecutionSessionIntern(LLVMOrcExecutionSessionRef ES, const char *Name) {
return wrap(