llvm_sys/orc2/
mod.rs

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