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:
parent
ac29437d5b
commit
effa9c6dc7
@ -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
Block a user