1use super::prelude::*;
4
5#[derive(Debug)]
6pub enum LLVMOpaqueSectionIterator {}
7
8pub type LLVMSectionIteratorRef = *mut LLVMOpaqueSectionIterator;
9
10#[derive(Debug)]
11pub enum LLVMOpaqueSymbolIterator {}
12
13pub type LLVMSymbolIteratorRef = *mut LLVMOpaqueSymbolIterator;
14
15#[derive(Debug)]
16pub enum LLVMOpaqueRelocationIterator {}
17
18pub type LLVMRelocationIteratorRef = *mut LLVMOpaqueRelocationIterator;
19
20#[derive(Debug)]
21pub enum LLVMOpaqueBinary {}
22
23pub type LLVMBinaryRef = *mut LLVMOpaqueBinary;
24
25#[repr(C)]
26#[derive(Debug)]
27pub enum LLVMBinaryType {
28 LLVMBinaryTypeArchive,
30 LLVMBinaryTypeMachOUniversalBinary,
32 LLVMBinaryTypeCOFFImportFile,
34 LLVMBinaryTypeIR,
36 LLVMBinaryTypeWinRes,
38 LLVMBinaryTypeCOFF,
40 LLVMBinaryTypeELF32L,
42 LLVMBinaryTypeELF32B,
44 LLVMBinaryTypeELF64L,
46 LLVMBinaryTypeELF64B,
48 LLVMBinaryTypeMachO32L,
50 LLVMBinaryTypeMachO32B,
52 LLVMBinaryTypeMachO64L,
54 LLVMBinaryTypeMachO64B,
56 LLVMBinaryTypeWasm,
58 LLVMBinaryTypeOffload,
60 LLVMBinaryTypeDXcontainer,
62}
63
64#[deprecated(since = "90.0.0")]
65pub enum LLVMOpaqueObjectFile {}
66
67#[allow(deprecated)]
68#[deprecated(since = "90.0.0")]
69pub type LLVMObjectFileRef = *mut LLVMOpaqueObjectFile;
70
71extern "C" {
72 pub fn LLVMCreateBinary(
74 MemBuf: LLVMMemoryBufferRef,
75 Context: LLVMContextRef,
76 ErrorMessage: *mut *mut ::libc::c_char,
77 ) -> LLVMBinaryRef;
78 pub fn LLVMDisposeBinary(BR: LLVMBinaryRef);
80
81 pub fn LLVMBinaryCopyMemoryBuffer(BR: LLVMBinaryRef) -> LLVMMemoryBufferRef;
82 pub fn LLVMBinaryGetType(BR: LLVMBinaryRef) -> LLVMBinaryType;
83 pub fn LLVMMachOUniversalBinaryCopyObjectForArch(
84 BR: LLVMBinaryRef,
85 Arch: *const ::libc::c_char,
86 ArchLen: ::libc::size_t,
87 ErrorMessage: *mut *mut ::libc::c_char,
88 ) -> LLVMBinaryRef;
89
90 pub fn LLVMObjectFileCopySectionIterator(BR: LLVMBinaryRef) -> LLVMSectionIteratorRef;
91 pub fn LLVMObjectFileIsSectionIteratorAtEnd(
92 BR: LLVMBinaryRef,
93 SI: LLVMSectionIteratorRef,
94 ) -> LLVMBool;
95 pub fn LLVMObjectFileCopySymbolIterator(BR: LLVMBinaryRef) -> LLVMSymbolIteratorRef;
96 pub fn LLVMObjectFileIsSymbolIteratorAtEnd(
97 BR: LLVMBinaryRef,
98 SI: LLVMSymbolIteratorRef,
99 ) -> LLVMBool;
100 pub fn LLVMDisposeSectionIterator(SI: LLVMSectionIteratorRef);
101
102 pub fn LLVMMoveToNextSection(SI: LLVMSectionIteratorRef);
103 pub fn LLVMMoveToContainingSection(Sect: LLVMSectionIteratorRef, Sym: LLVMSymbolIteratorRef);
104 pub fn LLVMDisposeSymbolIterator(SI: LLVMSymbolIteratorRef);
105 pub fn LLVMMoveToNextSymbol(SI: LLVMSymbolIteratorRef);
106 pub fn LLVMGetSectionName(SI: LLVMSectionIteratorRef) -> *const ::libc::c_char;
107 pub fn LLVMGetSectionSize(SI: LLVMSectionIteratorRef) -> u64;
108 pub fn LLVMGetSectionContents(SI: LLVMSectionIteratorRef) -> *const ::libc::c_char;
109 pub fn LLVMGetSectionAddress(SI: LLVMSectionIteratorRef) -> u64;
110 pub fn LLVMGetSectionContainsSymbol(
111 SI: LLVMSectionIteratorRef,
112 Sym: LLVMSymbolIteratorRef,
113 ) -> LLVMBool;
114 pub fn LLVMGetRelocations(Section: LLVMSectionIteratorRef) -> LLVMRelocationIteratorRef;
115 pub fn LLVMDisposeRelocationIterator(RI: LLVMRelocationIteratorRef);
116 pub fn LLVMIsRelocationIteratorAtEnd(
117 Section: LLVMSectionIteratorRef,
118 RI: LLVMRelocationIteratorRef,
119 ) -> LLVMBool;
120 pub fn LLVMMoveToNextRelocation(RI: LLVMRelocationIteratorRef);
121 pub fn LLVMGetSymbolName(SI: LLVMSymbolIteratorRef) -> *const ::libc::c_char;
122 pub fn LLVMGetSymbolAddress(SI: LLVMSymbolIteratorRef) -> u64;
123 pub fn LLVMGetSymbolSize(SI: LLVMSymbolIteratorRef) -> u64;
124 pub fn LLVMGetRelocationOffset(RI: LLVMRelocationIteratorRef) -> u64;
125 pub fn LLVMGetRelocationSymbol(RI: LLVMRelocationIteratorRef) -> LLVMSymbolIteratorRef;
126 pub fn LLVMGetRelocationType(RI: LLVMRelocationIteratorRef) -> u64;
127 pub fn LLVMGetRelocationTypeName(RI: LLVMRelocationIteratorRef) -> *const ::libc::c_char;
128 pub fn LLVMGetRelocationValueString(RI: LLVMRelocationIteratorRef) -> *const ::libc::c_char;
129
130 #[allow(deprecated)]
131 #[deprecated(since = "90.0.0", note = "Use LLVMCreateBinary instead")]
132 pub fn LLVMCreateObjectFile(MemBuf: LLVMMemoryBufferRef) -> LLVMObjectFileRef;
133 #[allow(deprecated)]
134 #[deprecated(since = "90.0.0", note = "Use LLVMDisposeBinary instead")]
135 pub fn LLVMDisposeObjectFile(ObjectFile: LLVMObjectFileRef);
136 #[allow(deprecated)]
137 #[deprecated(
138 since = "90.0.0",
139 note = "Use LLVMObjectFileCopySectionIterator instead"
140 )]
141 pub fn LLVMGetSections(ObjectFile: LLVMObjectFileRef) -> LLVMSectionIteratorRef;
142 #[allow(deprecated)]
143 #[deprecated(
144 since = "90.0.0",
145 note = "Use LLVMObjectFileIsSectionIteratorAtEnd instead"
146 )]
147 pub fn LLVMIsSectionIteratorAtEnd(
148 ObjectFile: LLVMObjectFileRef,
149 SI: LLVMSectionIteratorRef,
150 ) -> LLVMBool;
151 #[allow(deprecated)]
152 #[deprecated(
153 since = "90.0.0",
154 note = "Use LLVMObjectFileCopySymbolIterator instead"
155 )]
156 pub fn LLVMGetSymbols(ObjectFile: LLVMObjectFileRef) -> LLVMSymbolIteratorRef;
157 #[allow(deprecated)]
158 #[deprecated(
159 since = "90.0.0",
160 note = "Use LLVMObjectFileIsSymbolIteratorAtEnd instead"
161 )]
162 pub fn LLVMIsSymbolIteratorAtEnd(
163 ObjectFile: LLVMObjectFileRef,
164 SI: LLVMSymbolIteratorRef,
165 ) -> LLVMBool;
166}