forked from OSchip/llvm-project
[ORC] Add a C API function to set the ExecutionSession error reporter.
This commit is contained in:
parent
c88d9eae8a
commit
14cb9b4e21
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in New Issue