llvm_sys_featured/
object.rs1use 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#[cfg(LLVM_VERSION_9_OR_GREATER)]
21#[derive(Debug)]
22pub enum LLVMOpaqueBinary {}
23
24#[cfg(LLVM_VERSION_9_OR_GREATER)]
25pub type LLVMBinaryRef = *mut LLVMOpaqueBinary;
26
27#[cfg(LLVM_VERSION_9_OR_GREATER)]
28#[repr(C)]
29#[derive(Debug)]
30pub enum LLVMBinaryType {
31 LLVMBinaryTypeArchive,
33 LLVMBinaryTypeMachOUniversalBinary,
35 LLVMBinaryTypeCOFFImportFile,
37 LLVMBinaryTypeIR,
39 LLVMBinaryTypeWinRes,
41 LLVMBinaryTypeCOFF,
43 LLVMBinaryTypeELF32L,
45 LLVMBinaryTypeELF32B,
47 LLVMBinaryTypeELF64L,
49 LLVMBinaryTypeELF64B,
51 LLVMBinaryTypeMachO32L,
53 LLVMBinaryTypeMachO32B,
55 LLVMBinaryTypeMachO64L,
57 LLVMBinaryTypeMachO64B,
59 LLVMBinaryTypeWasm,
61}
62
63#[cfg_attr(LLVM_VERSION_9_OR_GREATER, deprecated(since = "LLVM 9.0"))]
64pub enum LLVMOpaqueObjectFile {}
65
66#[allow(deprecated)]
67#[cfg_attr(LLVM_VERSION_9_OR_GREATER, deprecated(since = "LLVM 9.0"))]
68pub type LLVMObjectFileRef = *mut LLVMOpaqueObjectFile;
69
70extern "C" {
71 #[cfg(LLVM_VERSION_9_OR_GREATER)]
73 pub fn LLVMCreateBinary(
74 MemBuf: LLVMMemoryBufferRef,
75 Context: LLVMContextRef,
76 ErrorMessage: *mut *mut ::libc::c_char,
77 ) -> LLVMBinaryRef;
78 #[cfg(LLVM_VERSION_9_OR_GREATER)]
80 pub fn LLVMDisposeBinary(BR: LLVMBinaryRef);
81
82 #[cfg(LLVM_VERSION_9_OR_GREATER)]
83 pub fn LLVMBinaryCopyMemoryBuffer(BR: LLVMBinaryRef) -> LLVMMemoryBufferRef;
84 #[cfg(LLVM_VERSION_9_OR_GREATER)]
85 pub fn LLVMBinaryGetType(BR: LLVMBinaryRef) -> LLVMBinaryType;
86 #[cfg(LLVM_VERSION_9_OR_GREATER)]
87 pub fn LLVMMachOUniversalBinaryCopyObjectForArch(
88 BR: LLVMBinaryRef,
89 Arch: *const ::libc::c_char,
90 ArchLen: ::libc::size_t,
91 ErrorMessage: *mut *mut ::libc::c_char,
92 ) -> LLVMBinaryRef;
93
94 #[cfg(LLVM_VERSION_9_OR_GREATER)]
95 pub fn LLVMObjectFileCopySectionIterator(BR: LLVMBinaryRef) -> LLVMSectionIteratorRef;
96 pub fn LLVMObjectFileIsSectionIteratorAtEnd(
97 #[cfg(LLVM_VERSION_8_OR_LOWER)]
98 ObjectFile: LLVMObjectFileRef,
99 #[cfg(LLVM_VERSION_9_OR_GREATER)]
100 BR: LLVMBinaryRef,
101 SI: LLVMSectionIteratorRef,
102 ) -> LLVMBool;
103 #[cfg(LLVM_VERSION_9_OR_GREATER)]
104 pub fn LLVMObjectFileCopySymbolIterator(BR: LLVMBinaryRef) -> LLVMSymbolIteratorRef;
105 pub fn LLVMObjectFileIsSymbolIteratorAtEnd(
106 #[cfg(LLVM_VERSION_8_OR_LOWER)]
107 ObjectFile: LLVMObjectFileRef,
108 #[cfg(LLVM_VERSION_9_OR_GREATER)]
109 BR: LLVMBinaryRef,
110 SI: LLVMSymbolIteratorRef,
111 ) -> LLVMBool;
112 #[cfg(LLVM_VERSION_9_OR_GREATER)]
113 pub fn LLVMDisposeSectionIterator(SI: LLVMSectionIteratorRef);
114
115 pub fn LLVMMoveToNextSection(SI: LLVMSectionIteratorRef);
116 pub fn LLVMMoveToContainingSection(Sect: LLVMSectionIteratorRef, Sym: LLVMSymbolIteratorRef);
117 pub fn LLVMDisposeSymbolIterator(SI: LLVMSymbolIteratorRef);
118 pub fn LLVMMoveToNextSymbol(SI: LLVMSymbolIteratorRef);
119 pub fn LLVMGetSectionName(SI: LLVMSectionIteratorRef) -> *const ::libc::c_char;
120 pub fn LLVMGetSectionSize(SI: LLVMSectionIteratorRef) -> u64;
121 pub fn LLVMGetSectionContents(SI: LLVMSectionIteratorRef) -> *const ::libc::c_char;
122 pub fn LLVMGetSectionAddress(SI: LLVMSectionIteratorRef) -> u64;
123 pub fn LLVMGetSectionContainsSymbol(
124 SI: LLVMSectionIteratorRef,
125 Sym: LLVMSymbolIteratorRef,
126 ) -> LLVMBool;
127 pub fn LLVMGetRelocations(Section: LLVMSectionIteratorRef) -> LLVMRelocationIteratorRef;
128 pub fn LLVMDisposeRelocationIterator(RI: LLVMRelocationIteratorRef);
129 pub fn LLVMIsRelocationIteratorAtEnd(
130 Section: LLVMSectionIteratorRef,
131 RI: LLVMRelocationIteratorRef,
132 ) -> LLVMBool;
133 pub fn LLVMMoveToNextRelocation(RI: LLVMRelocationIteratorRef);
134 pub fn LLVMGetSymbolName(SI: LLVMSymbolIteratorRef) -> *const ::libc::c_char;
135 pub fn LLVMGetSymbolAddress(SI: LLVMSymbolIteratorRef) -> u64;
136 pub fn LLVMGetSymbolSize(SI: LLVMSymbolIteratorRef) -> u64;
137 pub fn LLVMGetRelocationOffset(RI: LLVMRelocationIteratorRef) -> u64;
138 pub fn LLVMGetRelocationSymbol(RI: LLVMRelocationIteratorRef) -> LLVMSymbolIteratorRef;
139 pub fn LLVMGetRelocationType(RI: LLVMRelocationIteratorRef) -> u64;
140 pub fn LLVMGetRelocationTypeName(RI: LLVMRelocationIteratorRef) -> *const ::libc::c_char;
141 pub fn LLVMGetRelocationValueString(RI: LLVMRelocationIteratorRef) -> *const ::libc::c_char;
142
143 #[allow(deprecated)]
144 #[cfg_attr(LLVM_VERSION_9_OR_GREATER, deprecated(since = "LLVM 9.0", note = "Use LLVMCreateBinary instead"))]
145 pub fn LLVMCreateObjectFile(MemBuf: LLVMMemoryBufferRef) -> LLVMObjectFileRef;
146 #[allow(deprecated)]
147 #[cfg_attr(LLVM_VERSION_9_OR_GREATER, deprecated(since = "LLVM 9.0", note = "Use LLVMDisposeBinary instead"))]
148 pub fn LLVMDisposeObjectFile(ObjectFile: LLVMObjectFileRef);
149 #[allow(deprecated)]
150 #[cfg_attr(LLVM_VERSION_9_OR_GREATER, deprecated(
151 since = "LLVM 9.0",
152 note = "Use LLVMObjectFileCopySectionIterator instead"
153 ))]
154 pub fn LLVMGetSections(ObjectFile: LLVMObjectFileRef) -> LLVMSectionIteratorRef;
155 #[allow(deprecated)]
156 #[cfg_attr(LLVM_VERSION_9_OR_GREATER, deprecated(
157 since = "LLVM 9.0",
158 note = "Use LLVMObjectFileIsSectionIteratorAtEnd instead"
159 ))]
160 pub fn LLVMIsSectionIteratorAtEnd(
161 ObjectFile: LLVMObjectFileRef,
162 SI: LLVMSectionIteratorRef,
163 ) -> LLVMBool;
164 #[allow(deprecated)]
165 #[cfg_attr(LLVM_VERSION_9_OR_GREATER, deprecated(
166 since = "LLVM 9.0",
167 note = "Use LLVMObjectFileCopySymbolIterator instead"
168 ))]
169 pub fn LLVMGetSymbols(ObjectFile: LLVMObjectFileRef) -> LLVMSymbolIteratorRef;
170 #[allow(deprecated)]
171 #[cfg_attr(LLVM_VERSION_9_OR_GREATER, deprecated(
172 since = "LLVM 9.0",
173 note = "Use LLVMObjectFileIsSymbolIteratorAtEnd instead"
174 ))]
175 pub fn LLVMIsSymbolIteratorAtEnd(
176 ObjectFile: LLVMObjectFileRef,
177 SI: LLVMSymbolIteratorRef,
178 ) -> LLVMBool;
179}