1#![allow(non_upper_case_globals, non_snake_case)]
4
5#[derive(Debug)]
6pub enum LLVMOpaqueDisasmContext {}
7
8pub type LLVMDisasmContextRef = *mut LLVMOpaqueDisasmContext;
9
10pub type LLVMOpInfoCallback = Option<
11 extern "C" fn(
12 DisInfo: *mut ::libc::c_void,
13 PC: u64,
14 Offset: u64,
15 OpSize: u64,
16 InstSize: u64,
17 TagType: ::libc::c_int,
18 TagBuf: *mut ::libc::c_void,
19 ) -> ::libc::c_int,
20>;
21
22#[repr(C)]
23#[derive(Debug)]
24pub struct LLVMOpInfoSymbol1 {
25 pub Present: u64,
27 pub Name: *const ::libc::c_char,
29 pub Value: u64,
31}
32
33#[repr(C)]
34#[derive(Debug)]
35pub struct Struct_LLVMOpInfo1 {
36 pub AddSymbol: LLVMOpInfoSymbol1,
37 pub SubtractSymbol: LLVMOpInfoSymbol1,
38 pub Value: u64,
39 pub VariantKind: u64,
40}
41
42pub const LLVMDisassembler_VariantKind_None: u64 = 0;
43pub const LLVMDisassembler_VariantKind_ARM_HI16: u64 = 1;
44pub const LLVMDisassembler_VariantKind_ARM_LO16: u64 = 2;
45pub const LLVMDisassembler_VariantKind_ARM64_PAGE: u64 = 1;
46pub const LLVMDisassembler_VariantKind_ARM64_PAGEOFF: u64 = 2;
47pub const LLVMDisassembler_VariantKind_ARM64_GOTPAGE: u64 = 3;
48pub const LLVMDisassembler_VariantKind_ARM64_GOTPAGEOFF: u64 = 4;
49pub const LLVMDisassembler_VariantKind_ARM64_TLVP: u64 = 5;
50pub const LLVMDisassembler_VariantKind_ARM64_TLVOFF: u64 = 6;
51
52pub const LLVMDisassembler_ReferenceType_InOut_None: u64 = 0;
54
55pub const LLVMDisassembler_ReferenceType_In_Branch: u64 = 1;
57pub const LLVMDisassembler_ReferenceType_In_PCrel_Load: u64 = 2;
59
60pub const LLVMDisassembler_ReferenceType_In_ARM64_ADRP: u64 = 0x100000001;
62pub const LLVMDisassembler_ReferenceType_In_ARM64_ADDXri: u64 = 0x100000002;
64pub const LLVMDisassembler_ReferenceType_In_ARM64_LDRXui: u64 = 0x100000003;
66pub const LLVMDisassembler_ReferenceType_In_ARM64_LDRXl: u64 = 0x100000004;
68pub const LLVMDisassembler_ReferenceType_In_ARM64_ADR: u64 = 0x100000005;
70
71pub const LLVMDisassembler_ReferenceType_Out_SymbolStub: u64 = 1;
73pub const LLVMDisassembler_ReferenceType_Out_LitPool_SymAddr: u64 = 2;
75pub const LLVMDisassembler_ReferenceType_Out_LitPool_CstrAddr: u64 = 3;
77
78pub const LLVMDisassembler_ReferenceType_Out_Objc_CFString_Ref: u64 = 4;
80pub const LLVMDisassembler_ReferenceType_Out_Objc_Message: u64 = 5;
82pub const LLVMDisassembler_ReferenceType_Out_Objc_Message_Ref: u64 = 6;
84pub const LLVMDisassembler_ReferenceType_Out_Objc_Selector_Ref: u64 = 7;
86pub const LLVMDisassembler_ReferenceType_Out_Objc_Class_Ref: u64 = 8;
88pub const LLVMDisassembler_ReferenceType_DeMangled_Name: u64 = 9;
90
91pub const LLVMDisassembler_Option_UseMarkup: u64 = 1;
93pub const LLVMDisassembler_Option_PrintImmHex: u64 = 2;
95pub const LLVMDisassembler_Option_AsmPrinterVariant: u64 = 4;
97pub const LLVMDisassembler_Option_SetInstrComments: u64 = 8;
99pub const LLVMDisassembler_Option_PrintLatency: u64 = 16;
101pub const LLVMDisassembler_Option_Color: u64 = 32;
103
104pub type LLVMSymbolLookupCallback = Option<
105 extern "C" fn(
106 DisInfo: *mut ::libc::c_void,
107 ReferenceValue: u64,
108 ReferenceType: *mut u64,
109 ReferencePC: u64,
110 ReferenceName: *mut *const ::libc::c_char,
111 ) -> *const ::libc::c_char,
112>;
113
114extern "C" {
115 pub fn LLVMCreateDisasm(
116 TripleName: *const ::libc::c_char,
117 DisInfo: *mut ::libc::c_void,
118 TagType: ::libc::c_int,
119 GetOpInfo: LLVMOpInfoCallback,
120 SymbolLookUp: LLVMSymbolLookupCallback,
121 ) -> LLVMDisasmContextRef;
122 pub fn LLVMCreateDisasmCPU(
123 Triple: *const ::libc::c_char,
124 CPU: *const ::libc::c_char,
125 DisInfo: *mut ::libc::c_void,
126 TagType: ::libc::c_int,
127 GetOpInfo: LLVMOpInfoCallback,
128 SymbolLookUp: LLVMSymbolLookupCallback,
129 ) -> LLVMDisasmContextRef;
130 pub fn LLVMCreateDisasmCPUFeatures(
131 Triple: *const ::libc::c_char,
132 CPU: *const ::libc::c_char,
133 Features: *const ::libc::c_char,
134 DisInfo: *mut ::libc::c_void,
135 TagType: ::libc::c_int,
136 GetOpInfo: LLVMOpInfoCallback,
137 SymbolLookUp: LLVMSymbolLookupCallback,
138 ) -> LLVMDisasmContextRef;
139 pub fn LLVMSetDisasmOptions(DC: LLVMDisasmContextRef, Options: u64) -> ::libc::c_int;
140 pub fn LLVMDisasmDispose(DC: LLVMDisasmContextRef);
141 pub fn LLVMDisasmInstruction(
142 DC: LLVMDisasmContextRef,
143 Bytes: *mut u8,
144 BytesSize: u64,
145 PC: u64,
146 OutString: *mut ::libc::c_char,
147 OutStringSize: ::libc::size_t,
148 ) -> ::libc::size_t;
149}