llvm_sys_featured/
disassembler.rs1#![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 Size: u64,
16 TagType: ::libc::c_int,
17 TagBuf: *mut ::libc::c_void,
18 ) -> ::libc::c_int,
19>;
20
21#[repr(C)]
22#[derive(Debug)]
23pub struct LLVMOpInfoSymbol1 {
24 pub Present: u64,
26 pub Name: *const ::libc::c_char,
28 pub Value: u64,
30}
31
32#[repr(C)]
33#[derive(Debug)]
34pub struct Struct_LLVMOpInfo1 {
35 pub AddSymbol: LLVMOpInfoSymbol1,
36 pub SubtractSymbol: LLVMOpInfoSymbol1,
37 pub Value: u64,
38 pub VariantKind: u64,
39}
40
41pub const LLVMDisassembler_VariantKind_None: u64 = 0;
42pub const LLVMDisassembler_VariantKind_ARM_HI16: u64 = 1;
43pub const LLVMDisassembler_VariantKind_ARM_LO16: u64 = 2;
44pub const LLVMDisassembler_VariantKind_ARM64_PAGE: u64 = 1;
45pub const LLVMDisassembler_VariantKind_ARM64_PAGEOFF: u64 = 2;
46pub const LLVMDisassembler_VariantKind_ARM64_GOTPAGE: u64 = 3;
47pub const LLVMDisassembler_VariantKind_ARM64_GOTPAGEOFF: u64 = 4;
48pub const LLVMDisassembler_VariantKind_ARM64_TLVP: u64 = 5;
49pub const LLVMDisassembler_VariantKind_ARM64_TLVOFF: u64 = 6;
50
51pub const LLVMDisassembler_ReferenceType_InOut_None: u64 = 0;
53
54pub const LLVMDisassembler_ReferenceType_In_Branch: u64 = 1;
56pub const LLVMDisassembler_ReferenceType_In_PCrel_Load: u64 = 2;
58
59pub const LLVMDisassembler_ReferenceType_In_ARM64_ADRP: u64 = 0x100000001;
61pub const LLVMDisassembler_ReferenceType_In_ARM64_ADDXri: u64 = 0x100000002;
63pub const LLVMDisassembler_ReferenceType_In_ARM64_LDRXui: u64 = 0x100000003;
65pub const LLVMDisassembler_ReferenceType_In_ARM64_LDRXl: u64 = 0x100000004;
67pub const LLVMDisassembler_ReferenceType_In_ARM64_ADR: u64 = 0x100000005;
69
70pub const LLVMDisassembler_ReferenceType_Out_SymbolStub: u64 = 1;
72pub const LLVMDisassembler_ReferenceType_Out_LitPool_SymAddr: u64 = 2;
74pub const LLVMDisassembler_ReferenceType_Out_LitPool_CstrAddr: u64 = 3;
76
77pub const LLVMDisassembler_ReferenceType_Out_Objc_CFString_Ref: u64 = 4;
79pub const LLVMDisassembler_ReferenceType_Out_Objc_Message: u64 = 5;
81pub const LLVMDisassembler_ReferenceType_Out_Objc_Message_Ref: u64 = 6;
83pub const LLVMDisassembler_ReferenceType_Out_Objc_Selector_Ref: u64 = 7;
85pub const LLVMDisassembler_ReferenceType_Out_Objc_Class_Ref: u64 = 8;
87pub const LLVMDisassembler_ReferenceType_DeMangled_Name: u64 = 9;
89
90pub const LLVMDisassembler_Option_UseMarkup: u64 = 1;
92pub const LLVMDisassembler_Option_PrintImmHex: u64 = 2;
94pub const LLVMDisassembler_Option_AsmPrinterVariant: u64 = 4;
96pub const LLVMDisassembler_Option_SetInstrComments: u64 = 8;
98pub const LLVMDisassembler_Option_PrintLatency: u64 = 16;
100
101pub type LLVMSymbolLookupCallback = Option<
102 extern "C" fn(
103 DisInfo: *mut ::libc::c_void,
104 ReferenceValue: u64,
105 ReferenceType: *mut u64,
106 ReferencePC: u64,
107 ReferenceName: *mut *const ::libc::c_char,
108 ) -> *const ::libc::c_char,
109>;
110
111extern "C" {
112 pub fn LLVMCreateDisasm(
113 TripleName: *const ::libc::c_char,
114 DisInfo: *mut ::libc::c_void,
115 TagType: ::libc::c_int,
116 GetOpInfo: LLVMOpInfoCallback,
117 SymbolLookUp: LLVMSymbolLookupCallback,
118 ) -> LLVMDisasmContextRef;
119 pub fn LLVMCreateDisasmCPU(
120 Triple: *const ::libc::c_char,
121 CPU: *const ::libc::c_char,
122 DisInfo: *mut ::libc::c_void,
123 TagType: ::libc::c_int,
124 GetOpInfo: LLVMOpInfoCallback,
125 SymbolLookUp: LLVMSymbolLookupCallback,
126 ) -> LLVMDisasmContextRef;
127 pub fn LLVMCreateDisasmCPUFeatures(
128 Triple: *const ::libc::c_char,
129 CPU: *const ::libc::c_char,
130 Features: *const ::libc::c_char,
131 DisInfo: *mut ::libc::c_void,
132 TagType: ::libc::c_int,
133 GetOpInfo: LLVMOpInfoCallback,
134 SymbolLookUp: LLVMSymbolLookupCallback,
135 ) -> LLVMDisasmContextRef;
136 pub fn LLVMSetDisasmOptions(DC: LLVMDisasmContextRef, Options: u64) -> ::libc::c_int;
137 pub fn LLVMDisasmDispose(DC: LLVMDisasmContextRef);
138 pub fn LLVMDisasmInstruction(
139 DC: LLVMDisasmContextRef,
140 Bytes: *mut u8,
141 BytesSize: u64,
142 PC: u64,
143 OutString: *mut ::libc::c_char,
144 OutStringSize: ::libc::size_t,
145 ) -> ::libc::size_t;
146}