llvm_sys/orc2/
mod.rs

1#![allow(non_snake_case)]
2//! OrcV2
3
4use crate::error::LLVMErrorRef;
5use crate::prelude::*;
6use crate::target_machine::LLVMTargetMachineRef;
7
8pub mod ee;
9pub mod lljit;
10
11/// Represents an address in the executor process.
12pub type LLVMOrcJITTargetAddress = u64;
13
14/// Represents an address in the executor process
15pub type LLVMOrcExecutorAddress = u64;
16
17/// Generic linkage flags for a symbol definition.
18#[repr(C)]
19#[derive(Clone, Copy, Debug, PartialEq)]
20pub enum LLVMJITSymbolGenericFlags {
21    LLVMJITSymbolGenericFlagsNone = 0,
22    LLVMJITSymbolGenericFlagsExported = 1,
23    LLVMJITSymbolGenericFlagsWeak = 2,
24    LLVMJITSymbolGenericFlagsCallable = 4,
25    LLVMJITSymbolGenericFlagsMaterializationSideEffectsOnly = 8,
26}
27
28/// Target specific flags for a symbol definition.
29pub type LLVMJITSymbolTargetFlags = u8;
30
31/// Linkage flags for a symbol definition.
32#[repr(C)]
33#[derive(Debug)]
34pub struct LLVMJITSymbolFlags {
35    pub GenericFlags: u8,
36    pub TargetFlags: u8,
37}
38
39/// An evaluated symbol address and flags.
40#[repr(C)]
41#[derive(Debug)]
42pub struct LLVMJITEvaluatedSymbol {
43    pub Address: LLVMOrcExecutorAddress,
44    pub Flags: LLVMJITSymbolFlags,
45}
46
47#[derive(Debug)]
48pub enum LLVMOrcOpaqueExecutionSession {}
49pub type LLVMOrcExecutionSessionRef = *mut LLVMOrcOpaqueExecutionSession;
50
51/// Error reporter function.
52pub type LLVMOrcErrorReporterFunction = extern "C" fn(Ctx: *mut ::libc::c_void, Err: LLVMErrorRef);
53
54#[derive(Debug)]
55pub enum LLVMOrcOpaqueSymbolStringPool {}
56/// A reference to an orc::SymbolStringPool.
57pub type LLVMOrcSymbolStringPoolRef = *mut LLVMOrcOpaqueSymbolStringPool;
58
59#[derive(Debug)]
60pub enum LLVMOrcOpaqueSymbolStringPoolEntry {}
61pub type LLVMOrcSymbolStringPoolEntryRef = *mut LLVMOrcOpaqueSymbolStringPoolEntry;
62
63/// A pair of a symbol name and LLVMJITSymbolFlags.
64#[repr(C)]
65#[derive(Debug)]
66pub struct LLVMOrcCSymbolFlagsMapPair {
67    pub Name: LLVMOrcSymbolStringPoolEntryRef,
68    pub Flags: LLVMJITSymbolFlags,
69}
70
71pub type LLVMOrcCSymbolFlagsMapPairs = *mut LLVMOrcCSymbolFlagsMapPair;
72
73/// A pair of a symbol name and an evaluated symbol.
74#[repr(C)]
75#[derive(Debug)]
76pub struct LLVMOrcCSymbolMapPair {
77    pub Name: LLVMOrcSymbolStringPoolEntryRef,
78    pub Sym: LLVMJITEvaluatedSymbol,
79}
80
81/// A list of (SymbolStringPtr, JITEvaluatedSymbol) pairs that can be
82/// used to construct a SymbolMap.
83pub type LLVMOrcCSymbolMapPairs = *mut LLVMOrcCSymbolMapPair;
84
85#[repr(C)]
86#[derive(Debug)]
87pub struct LLVMOrcCSymbolAliasMapEntry {
88    pub Name: LLVMOrcSymbolStringPoolEntryRef,
89    pub Flags: LLVMJITSymbolFlags,
90}
91
92#[repr(C)]
93#[derive(Debug)]
94pub struct LLVMOrcCSymbolAliasMapPair {
95    pub Name: LLVMOrcSymbolStringPoolEntryRef,
96    pub Entry: LLVMOrcCSymbolAliasMapEntry,
97}
98
99pub type LLVMOrcCSymbolAliasMapPairs = *mut LLVMOrcCSymbolAliasMapPair;
100
101#[derive(Debug)]
102pub enum LLVMOrcOpaqueJITDylib {}
103pub type LLVMOrcJITDylibRef = *mut LLVMOrcOpaqueJITDylib;
104
105#[repr(C)]
106#[derive(Debug)]
107pub struct LLVMOrcCSymbolsList {
108    pub Symbols: *mut LLVMOrcSymbolStringPoolEntryRef,
109    pub Length: ::libc::size_t,
110}
111
112#[repr(C)]
113#[derive(Debug)]
114pub struct LLVMOrcCDependenceMapPair {
115    pub JD: LLVMOrcJITDylibRef,
116    pub Names: LLVMOrcCSymbolsList,
117}
118
119pub type LLVMOrcCDependenceMapPairs = *mut LLVMOrcCDependenceMapPair;
120
121/// A set of symbols that share dependencies.
122#[repr(C)]
123pub struct LLVMOrcCSymbolDependenceGroup {
124    Symbols: LLVMOrcCSymbolsList,
125    Dependencies: LLVMOrcCDependenceMapPairs,
126    NumDependencies: usize,
127}
128
129/// Lookup kind. This can be used by definition generators when deciding whether
130/// to produce a definition for a requested symbol.
131#[repr(C)]
132#[derive(Clone, Copy, Debug, PartialEq)]
133pub enum LLVMOrcLookupKind {
134    LLVMOrcLookupKindStatic,
135    LLVMOrcLookupKindDLSym,
136}
137
138/// JITDylib lookup flags. This can be used by definition generators when
139/// deciding whether to produce a definition for a requested symbol.
140#[repr(C)]
141#[derive(Clone, Copy, Debug, PartialEq)]
142pub enum LLVMOrcJITDylibLookupFlags {
143    LLVMOrcJITDylibLookupFlagsMatchExportedSymbolsOnly,
144    LLVMOrcJITDylibLookupFlagsMatchAllSymbols,
145}
146
147/// An element type for a JITDylib search order.
148#[repr(C)]
149#[derive(Clone, Copy, Debug, PartialEq)]
150pub struct LLVMOrcCJITDylibSearchOrderElement {
151    pub JD: LLVMOrcJITDylibRef,
152    pub JDLookupFlags: LLVMOrcJITDylibLookupFlags,
153}
154
155/// A JITDylib search order.
156///
157/// The list is terminated with an element containing a null pointer for the JD
158/// field.
159pub type LLVMOrcCJITDylibSearchOrder = *mut LLVMOrcCJITDylibSearchOrderElement;
160
161/// Symbol lookup flags for lookup sets.
162#[repr(C)]
163#[derive(Clone, Copy, Debug, PartialEq)]
164pub enum LLVMOrcSymbolLookupFlags {
165    LLVMOrcSymbolLookupFlagsRequiredSymbol,
166    LLVMOrcSymbolLookupFlagsWeaklyReferencedSymbol,
167}
168
169/// An element type for a symbol lookup set.
170#[repr(C)]
171#[derive(Debug)]
172pub struct LLVMOrcCLookupSetElement {
173    pub Name: LLVMOrcSymbolStringPoolEntryRef,
174    pub LookupFlags: LLVMOrcSymbolLookupFlags,
175}
176
177/// A set of symbols to look up / generate.
178///
179/// The list is terminated with an element containing a null pointer for the
180/// Name field.
181///
182/// The creator is responsible for freeing the set and ensuring all strings
183/// are retained for the set's lifetime.
184pub type LLVMOrcCLookupSet = *mut LLVMOrcCLookupSetElement;
185
186#[derive(Debug)]
187pub enum LLVMOrcOpaqueMaterializationUnit {}
188pub type LLVMOrcMaterializationUnitRef = *mut LLVMOrcOpaqueMaterializationUnit;
189
190#[derive(Debug)]
191pub enum LLVMOrcOpaqueMaterializationResponsibility {}
192pub type LLVMOrcMaterializationResponsibilityRef = *mut LLVMOrcOpaqueMaterializationResponsibility;
193
194pub type LLVMOrcMaterializationUnitMaterializeFunction =
195    extern "C" fn(Ctx: *mut ::libc::c_void, MR: LLVMOrcMaterializationResponsibilityRef);
196
197pub type LLVMOrcMaterializationUnitDiscardFunction = extern "C" fn(
198    Ctx: *mut ::libc::c_void,
199    JD: LLVMOrcJITDylibRef,
200    Symbol: LLVMOrcSymbolStringPoolEntryRef,
201);
202
203pub type LLVMOrcMaterializationUnitDestroyFunction = extern "C" fn(Ctx: *mut ::libc::c_void);
204
205#[derive(Debug)]
206pub enum LLVMOrcOpaqueResourceTracker {}
207pub type LLVMOrcResourceTrackerRef = *mut LLVMOrcOpaqueResourceTracker;
208
209#[derive(Debug)]
210pub enum LLVMOrcOpaqueDefinitionGenerator {}
211pub type LLVMOrcDefinitionGeneratorRef = *mut LLVMOrcOpaqueDefinitionGenerator;
212
213#[derive(Debug)]
214pub enum LLVMOrcOpaqueLookupState {}
215pub type LLVMOrcLookupStateRef = *mut LLVMOrcOpaqueLookupState;
216
217pub type LLVMOrcCAPIDefinitionGeneratorTryToGenerateFunction = extern "C" fn(
218    GeneratorObj: LLVMOrcDefinitionGeneratorRef,
219    Ctx: *mut ::libc::c_void,
220    LookupState: *mut LLVMOrcLookupStateRef,
221    Kind: LLVMOrcLookupKind,
222    JD: LLVMOrcJITDylibRef,
223    JDLookupFlags: LLVMOrcJITDylibLookupFlags,
224    LookupSet: LLVMOrcCLookupSet,
225    LookupSetSize: usize,
226) -> LLVMErrorRef;
227
228/// Disposer for a custom generator.
229///
230/// Will be called by ORC when the JITDylib that the generator is attached to
231/// is destroyed.
232pub type LLVMOrcDisposeCAPIDefinitionGeneratorFunction = extern "C" fn(Ctx: *mut ::libc::c_void);
233
234pub type LLVMOrcSymbolPredicate = Option<
235    extern "C" fn(Ctx: *mut ::libc::c_void, Sym: LLVMOrcSymbolStringPoolEntryRef) -> ::libc::c_int,
236>;
237
238#[derive(Debug)]
239pub enum LLVMOrcOpaqueThreadSafeContext {}
240pub type LLVMOrcThreadSafeContextRef = *mut LLVMOrcOpaqueThreadSafeContext;
241
242#[derive(Debug)]
243pub enum LLVMOrcOpaqueThreadSafeModule {}
244pub type LLVMOrcThreadSafeModuleRef = *mut LLVMOrcOpaqueThreadSafeModule;
245
246pub type LLVMOrcGenericIRModuleOperationFunction =
247    extern "C" fn(Ctx: *mut ::libc::c_void, M: LLVMModuleRef) -> LLVMErrorRef;
248
249#[derive(Debug)]
250pub enum LLVMOrcOpaqueJITTargetMachineBuilder {}
251pub type LLVMOrcJITTargetMachineBuilderRef = *mut LLVMOrcOpaqueJITTargetMachineBuilder;
252
253#[derive(Debug)]
254pub enum LLVMOrcOpaqueObjectLayer {}
255pub type LLVMOrcObjectLayerRef = *mut LLVMOrcOpaqueObjectLayer;
256
257#[derive(Debug)]
258pub enum LLVMOrcOpaqueObjectLinkingLayer {}
259pub type LLVMOrcObjectLinkingLayerRef = *mut LLVMOrcOpaqueObjectLayer;
260
261#[derive(Debug)]
262pub enum LLVMOrcOpaqueIRTransformLayer {}
263pub type LLVMOrcIRTransformLayerRef = *mut LLVMOrcOpaqueIRTransformLayer;
264
265pub type LLVMOrcIRTransformLayerTransformFunction = extern "C" fn(
266    Ctx: *mut ::libc::c_void,
267    ModInOut: *mut LLVMOrcThreadSafeModuleRef,
268    MR: LLVMOrcMaterializationResponsibilityRef,
269) -> LLVMErrorRef;
270
271#[derive(Debug)]
272pub enum LLVMOrcOpaqueObjectTransformLayer {}
273pub type LLVMOrcObjectTransformLayerRef = *mut LLVMOrcOpaqueObjectTransformLayer;
274
275pub type LLVMOrcObjectTransformLayerTransformFunction =
276    extern "C" fn(Ctx: *mut ::libc::c_void, ObjInOut: *mut LLVMMemoryBufferRef) -> LLVMErrorRef;
277
278#[derive(Debug)]
279pub enum LLVMOrcOpaqueIndirectStubsManager {}
280pub type LLVMOrcIndirectStubsManagerRef = *mut LLVMOrcOpaqueIndirectStubsManager;
281
282#[derive(Debug)]
283pub enum LLVMOrcOpaqueLazyCallThroughManager {}
284pub type LLVMOrcLazyCallThroughManagerRef = *mut LLVMOrcOpaqueLazyCallThroughManager;
285
286#[derive(Debug)]
287pub enum LLVMOrcOpaqueDumpObjects {}
288pub type LLVMOrcDumpObjectsRef = *mut LLVMOrcOpaqueDumpObjects;
289
290extern "C" {
291    pub fn LLVMOrcExecutionSessionSetErrorReporter(
292        ES: LLVMOrcExecutionSessionRef,
293        ReportError: LLVMOrcErrorReporterFunction,
294        Ctx: *mut ::libc::c_void,
295    );
296    pub fn LLVMOrcExecutionSessionGetSymbolStringPool(
297        ES: LLVMOrcExecutionSessionRef,
298    ) -> LLVMOrcSymbolStringPoolRef;
299    pub fn LLVMOrcSymbolStringPoolClearDeadEntries(SSP: LLVMOrcSymbolStringPoolRef);
300    pub fn LLVMOrcExecutionSessionIntern(
301        ES: LLVMOrcExecutionSessionRef,
302        Name: *const ::libc::c_char,
303    ) -> LLVMOrcSymbolStringPoolEntryRef;
304}
305
306pub type LLVMOrcExecutionSessionLookupHandleResultFunction = extern "C" fn(
307    Err: LLVMErrorRef,
308    Result: LLVMOrcCSymbolMapPairs,
309    NumPairs: usize,
310    Ctx: *mut ::libc::c_void,
311);
312
313extern "C" {
314    pub fn LLVMOrcExecutionSessionLookup(
315        ES: LLVMOrcExecutionSessionRef,
316        K: LLVMOrcLookupKind,
317        SearchOrder: LLVMOrcCJITDylibSearchOrder,
318        SearchOrderSize: usize,
319        Symbols: LLVMOrcCLookupSet,
320        SymbolsSize: usize,
321        HandleResult: LLVMOrcExecutionSessionLookupHandleResultFunction,
322        Ctx: *mut ::libc::c_void,
323    );
324    pub fn LLVMOrcRetainSymbolStringPoolEntry(S: LLVMOrcSymbolStringPoolEntryRef);
325    pub fn LLVMOrcReleaseSymbolStringPoolEntry(S: LLVMOrcSymbolStringPoolEntryRef);
326    pub fn LLVMOrcSymbolStringPoolEntryStr(
327        S: LLVMOrcSymbolStringPoolEntryRef,
328    ) -> *const ::libc::c_char;
329    pub fn LLVMOrcReleaseResourceTracker(RT: LLVMOrcResourceTrackerRef);
330    pub fn LLVMOrcResourceTrackerTransferTo(
331        SrcRT: LLVMOrcResourceTrackerRef,
332        DstRT: LLVMOrcResourceTrackerRef,
333    );
334    pub fn LLVMOrcResourceTrackerRemove(RT: LLVMOrcResourceTrackerRef) -> LLVMErrorRef;
335    pub fn LLVMOrcDisposeDefinitionGenerator(DG: LLVMOrcDefinitionGeneratorRef);
336    pub fn LLVMOrcDisposeMaterializationUnit(MU: LLVMOrcMaterializationUnitRef);
337    pub fn LLVMOrcCreateCustomMaterializationUnit(
338        Name: *const ::libc::c_char,
339        Ctx: *mut ::libc::c_void,
340        Syms: LLVMOrcCSymbolFlagsMapPairs,
341        NumSyms: ::libc::size_t,
342        InitSym: LLVMOrcSymbolStringPoolEntryRef,
343        Materialize: LLVMOrcMaterializationUnitMaterializeFunction,
344        Discard: LLVMOrcMaterializationUnitDiscardFunction,
345        Destroy: LLVMOrcMaterializationUnitDestroyFunction,
346    ) -> LLVMOrcMaterializationUnitRef;
347    pub fn LLVMOrcAbsoluteSymbols(
348        Syms: LLVMOrcCSymbolMapPairs,
349        NumPairs: usize,
350    ) -> LLVMOrcMaterializationUnitRef;
351    pub fn LLVMOrcLazyReexports(
352        LCTM: LLVMOrcLazyCallThroughManagerRef,
353        ISM: LLVMOrcIndirectStubsManagerRef,
354        SourceRef: LLVMOrcJITDylibRef,
355        CallableAliases: LLVMOrcCSymbolAliasMapPairs,
356        NumPairs: ::libc::size_t,
357    ) -> LLVMOrcMaterializationUnitRef;
358    pub fn LLVMOrcDisposeMaterializationResponsibility(MR: LLVMOrcMaterializationResponsibilityRef);
359    pub fn LLVMOrcMaterializationResponsibilityGetTargetDylib(
360        MR: LLVMOrcMaterializationResponsibilityRef,
361    ) -> LLVMOrcJITDylibRef;
362    pub fn LLVMOrcMaterializationResponsibilityGetExecutionSession(
363        MR: LLVMOrcMaterializationResponsibilityRef,
364    ) -> LLVMOrcExecutionSessionRef;
365    pub fn LLVMOrcMaterializationResponsibilityGetSymbols(
366        MR: LLVMOrcMaterializationResponsibilityRef,
367        NumPairs: *mut ::libc::size_t,
368    ) -> LLVMOrcCSymbolFlagsMapPairs;
369    pub fn LLVMOrcDisposeCSymbolFlagsMap(Pairs: LLVMOrcCSymbolFlagsMapPairs);
370    pub fn LLVMOrcMaterializationResponsibilityGetInitializerSymbol(
371        MR: LLVMOrcMaterializationResponsibilityRef,
372    ) -> LLVMOrcSymbolStringPoolEntryRef;
373    pub fn LLVMOrcMaterializationResponsibilityGetRequestedSymbols(
374        MR: LLVMOrcMaterializationResponsibilityRef,
375        NumSymbols: *mut ::libc::size_t,
376    ) -> *mut LLVMOrcSymbolStringPoolEntryRef;
377    pub fn LLVMOrcDisposeSymbols(Symbols: *mut LLVMOrcSymbolStringPoolEntryRef);
378    pub fn LLVMOrcMaterializationResponsibilityNotifyResolved(
379        MR: LLVMOrcMaterializationResponsibilityRef,
380        Symbols: LLVMOrcCSymbolMapPairs,
381        NumPairs: ::libc::size_t,
382    ) -> LLVMErrorRef;
383    pub fn LLVMOrcMaterializationResponsibilityNotifyEmitted(
384        MR: LLVMOrcMaterializationResponsibilityRef,
385        SymbolDepGroups: *mut LLVMOrcCSymbolDependenceGroup,
386        NumSymbolDepGroups: usize,
387    ) -> LLVMErrorRef;
388    pub fn LLVMOrcMaterializationResponsibilityDefineMaterializing(
389        MR: LLVMOrcMaterializationResponsibilityRef,
390        Pairs: LLVMOrcCSymbolFlagsMapPairs,
391        NumPairs: ::libc::size_t,
392    ) -> LLVMErrorRef;
393    pub fn LLVMOrcMaterializationResponsibilityFailMaterialization(
394        MR: LLVMOrcMaterializationResponsibilityRef,
395    );
396    pub fn LLVMOrcMaterializationResponsibilityReplace(
397        MR: LLVMOrcMaterializationResponsibilityRef,
398        MU: LLVMOrcMaterializationUnitRef,
399    ) -> LLVMErrorRef;
400    pub fn LLVMOrcMaterializationResponsibilityDelegate(
401        MR: LLVMOrcMaterializationResponsibilityRef,
402        Symbols: *mut LLVMOrcSymbolStringPoolEntryRef,
403        NumSymbols: ::libc::size_t,
404        Result: *mut LLVMOrcMaterializationResponsibilityRef,
405    ) -> LLVMErrorRef;
406    pub fn LLVMOrcExecutionSessionCreateBareJITDylib(
407        ES: LLVMOrcExecutionSessionRef,
408        Name: *const ::libc::c_char,
409    ) -> LLVMOrcJITDylibRef;
410    pub fn LLVMOrcExecutionSessionCreateJITDylib(
411        ES: LLVMOrcExecutionSessionRef,
412        Result_: *mut LLVMOrcJITDylibRef,
413        Name: *const ::libc::c_char,
414    ) -> LLVMErrorRef;
415    pub fn LLVMOrcExecutionSessionGetJITDylibByName(
416        ES: LLVMOrcExecutionSessionRef,
417        Name: *const ::libc::c_char,
418    ) -> LLVMOrcJITDylibRef;
419    pub fn LLVMOrcJITDylibCreateResourceTracker(
420        JD: LLVMOrcJITDylibRef,
421    ) -> LLVMOrcResourceTrackerRef;
422    pub fn LLVMOrcJITDylibGetDefaultResourceTracker(
423        JD: LLVMOrcJITDylibRef,
424    ) -> LLVMOrcResourceTrackerRef;
425    pub fn LLVMOrcJITDylibDefine(
426        JD: LLVMOrcJITDylibRef,
427        MU: LLVMOrcMaterializationUnitRef,
428    ) -> LLVMErrorRef;
429    pub fn LLVMOrcJITDylibClear(JD: LLVMOrcJITDylibRef) -> LLVMErrorRef;
430    pub fn LLVMOrcJITDylibAddGenerator(JD: LLVMOrcJITDylibRef, DG: LLVMOrcDefinitionGeneratorRef);
431    pub fn LLVMOrcCreateCustomCAPIDefinitionGenerator(
432        F: LLVMOrcCAPIDefinitionGeneratorTryToGenerateFunction,
433        Ctx: *mut ::libc::c_void,
434        Dispose: LLVMOrcDisposeCAPIDefinitionGeneratorFunction,
435    ) -> LLVMOrcDefinitionGeneratorRef;
436    pub fn LLVMOrcLookupStateContinueLookup(S: LLVMOrcLookupStateRef, Err: LLVMErrorRef);
437    pub fn LLVMOrcCreateDynamicLibrarySearchGeneratorForProcess(
438        Result: *mut LLVMOrcDefinitionGeneratorRef,
439        GlobalPrefix: ::libc::c_char,
440        Filter: LLVMOrcSymbolPredicate,
441        FilterCtx: *mut ::libc::c_void,
442    ) -> LLVMErrorRef;
443    pub fn LLVMOrcCreateDynamicLibrarySearchGeneratorForPath(
444        Result: *mut LLVMOrcDefinitionGeneratorRef,
445        FileName: *const ::libc::c_char,
446        GlobalPrefix: ::libc::c_char,
447        Filter: LLVMOrcSymbolPredicate,
448        FilterCtx: *mut ::libc::c_void,
449    ) -> LLVMErrorRef;
450    pub fn LLVMOrcCreateStaticLibrarySearchGeneratorForPath(
451        Result: *mut LLVMOrcDefinitionGeneratorRef,
452        ObjLayer: LLVMOrcObjectLayerRef,
453        FileName: *const ::libc::c_char,
454        TargetTriple: *const ::libc::c_char,
455    ) -> LLVMErrorRef;
456    pub fn LLVMOrcCreateNewThreadSafeContext() -> LLVMOrcThreadSafeContextRef;
457    pub fn LLVMOrcThreadSafeContextGetContext(TSCtx: LLVMOrcThreadSafeContextRef)
458        -> LLVMContextRef;
459    pub fn LLVMOrcDisposeThreadSafeContext(TSCtx: LLVMOrcThreadSafeContextRef);
460    pub fn LLVMOrcCreateNewThreadSafeModule(
461        M: LLVMModuleRef,
462        TSCtx: LLVMOrcThreadSafeContextRef,
463    ) -> LLVMOrcThreadSafeModuleRef;
464    pub fn LLVMOrcDisposeThreadSafeModule(TSM: LLVMOrcThreadSafeModuleRef);
465    pub fn LLVMOrcThreadSafeModuleWithModuleDo(
466        TSM: LLVMOrcThreadSafeModuleRef,
467        F: LLVMOrcGenericIRModuleOperationFunction,
468        Ctx: *mut ::libc::c_void,
469    ) -> LLVMErrorRef;
470    pub fn LLVMOrcJITTargetMachineBuilderDetectHost(
471        Result: *mut LLVMOrcJITTargetMachineBuilderRef,
472    ) -> LLVMErrorRef;
473    pub fn LLVMOrcJITTargetMachineBuilderCreateFromTargetMachine(
474        TM: LLVMTargetMachineRef,
475    ) -> LLVMOrcJITTargetMachineBuilderRef;
476    pub fn LLVMOrcDisposeJITTargetMachineBuilder(JTMB: LLVMOrcJITTargetMachineBuilderRef);
477    pub fn LLVMOrcJITTargetMachineBuilderGetTargetTriple(
478        JTMB: LLVMOrcJITTargetMachineBuilderRef,
479    ) -> *mut ::libc::c_char;
480    pub fn LLVMOrcJITTargetMachineBuilderSetTargetTriple(
481        JTMB: LLVMOrcJITTargetMachineBuilderRef,
482        TargetTriple: *const ::libc::c_char,
483    );
484    pub fn LLVMOrcObjectLayerAddObjectFile(
485        ObjLayer: LLVMOrcObjectLayerRef,
486        JD: LLVMOrcJITDylibRef,
487        ObjBuffer: LLVMMemoryBufferRef,
488    ) -> LLVMErrorRef;
489    pub fn LLVMOrcObjectLayerAddObjectFileWithRT(
490        ObjLayer: LLVMOrcObjectLayerRef,
491        RT: LLVMOrcResourceTrackerRef,
492        ObjBuffer: LLVMMemoryBufferRef,
493    ) -> LLVMErrorRef;
494    pub fn LLVMOrcObjectLayerEmit(
495        ObjLayer: LLVMOrcObjectLayerRef,
496        R: LLVMOrcMaterializationResponsibilityRef,
497        ObjBuffer: LLVMMemoryBufferRef,
498    );
499    pub fn LLVMOrcDisposeObjectLayer(ObjLayer: LLVMOrcObjectLayerRef);
500    pub fn LLVMOrcIRTransformLayerEmit(
501        IRTransformLayer: LLVMOrcIRTransformLayerRef,
502        MR: LLVMOrcMaterializationResponsibilityRef,
503        TSM: LLVMOrcThreadSafeModuleRef,
504    );
505    pub fn LLVMOrcIRTransformLayerSetTransform(
506        IRTransformLayer: LLVMOrcIRTransformLayerRef,
507        TransformFunction: LLVMOrcIRTransformLayerTransformFunction,
508        Ctx: *mut ::libc::c_void,
509    );
510    pub fn LLVMOrcObjectTransformLayerSetTransform(
511        ObjTransformLayer: LLVMOrcObjectTransformLayerRef,
512        TransformFunction: LLVMOrcObjectTransformLayerTransformFunction,
513        Ctx: *mut ::libc::c_void,
514    );
515    pub fn LLVMOrcCreateLocalIndirectStubsManager(
516        TargetTriple: *const ::libc::c_char,
517    ) -> LLVMOrcIndirectStubsManagerRef;
518    pub fn LLVMOrcDisposeIndirectStubsManager(ISM: LLVMOrcIndirectStubsManagerRef);
519    pub fn LLVMOrcCreateLocalLazyCallThroughManager(
520        TargetTriple: *const ::libc::c_char,
521        ES: LLVMOrcExecutionSessionRef,
522        ErrorHandlerAddr: LLVMOrcJITTargetAddress,
523        LCTM: *mut LLVMOrcLazyCallThroughManagerRef,
524    ) -> LLVMErrorRef;
525    pub fn LLVMOrcDisposeLazyCallThroughManager(LCTM: LLVMOrcLazyCallThroughManagerRef);
526    pub fn LLVMOrcCreateDumpObjects(
527        DumpDir: *const ::libc::c_char,
528        IdentifierOverride: *const ::libc::c_char,
529    ) -> LLVMOrcDumpObjectsRef;
530    pub fn LLVMOrcDisposeDumpObjects(DumpObjects: LLVMOrcDumpObjectsRef);
531    pub fn LLVMOrcDumpObjects_CallOperator(
532        DumpObjects: LLVMOrcDumpObjectsRef,
533        ObjBuffer: *mut LLVMMemoryBufferRef,
534    ) -> LLVMErrorRef;
535}