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}
61
62#[deprecated(since = "90.0.0")]
63pub enum LLVMOpaqueObjectFile {}
64
65#[allow(deprecated)]
66#[deprecated(since = "90.0.0")]
67pub type LLVMObjectFileRef = *mut LLVMOpaqueObjectFile;
68
69extern "C" {
70 pub fn LLVMCreateBinary(
72 MemBuf: LLVMMemoryBufferRef,
73 Context: LLVMContextRef,
74 ErrorMessage: *mut *mut ::libc::c_char,
75 ) -> LLVMBinaryRef;
76 pub fn LLVMDisposeBinary(BR: LLVMBinaryRef);
78
79 pub fn LLVMBinaryCopyMemoryBuffer(BR: LLVMBinaryRef) -> LLVMMemoryBufferRef;
80 pub fn LLVMBinaryGetType(BR: LLVMBinaryRef) -> LLVMBinaryType;
81 pub fn LLVMMachOUniversalBinaryCopyObjectForArch(
82 BR: LLVMBinaryRef,
83 Arch: *const ::libc::c_char,
84 ArchLen: ::libc::size_t,
85 ErrorMessage: *mut *mut ::libc::c_char,
86 ) -> LLVMBinaryRef;
87
88 pub fn LLVMObjectFileCopySectionIterator(BR: LLVMBinaryRef) -> LLVMSectionIteratorRef;
89 pub fn LLVMObjectFileIsSectionIteratorAtEnd(
90 BR: LLVMBinaryRef,
91 SI: LLVMSectionIteratorRef,
92 ) -> LLVMBool;
93 pub fn LLVMObjectFileCopySymbolIterator(BR: LLVMBinaryRef) -> LLVMSymbolIteratorRef;
94 pub fn LLVMObjectFileIsSymbolIteratorAtEnd(
95 BR: LLVMBinaryRef,
96 SI: LLVMSymbolIteratorRef,
97 ) -> LLVMBool;
98 pub fn LLVMDisposeSectionIterator(SI: LLVMSectionIteratorRef);
99
100 pub fn LLVMMoveToNextSection(SI: LLVMSectionIteratorRef);
101 pub fn LLVMMoveToContainingSection(Sect: LLVMSectionIteratorRef, Sym: LLVMSymbolIteratorRef);
102 pub fn LLVMDisposeSymbolIterator(SI: LLVMSymbolIteratorRef);
103 pub fn LLVMMoveToNextSymbol(SI: LLVMSymbolIteratorRef);
104 pub fn LLVMGetSectionName(SI: LLVMSectionIteratorRef) -> *const ::libc::c_char;
105 pub fn LLVMGetSectionSize(SI: LLVMSectionIteratorRef) -> u64;
106 pub fn LLVMGetSectionContents(SI: LLVMSectionIteratorRef) -> *const ::libc::c_char;
107 pub fn LLVMGetSectionAddress(SI: LLVMSectionIteratorRef) -> u64;
108 pub fn LLVMGetSectionContainsSymbol(
109 SI: LLVMSectionIteratorRef,
110 Sym: LLVMSymbolIteratorRef,
111 ) -> LLVMBool;
112 pub fn LLVMGetRelocations(Section: LLVMSectionIteratorRef) -> LLVMRelocationIteratorRef;
113 pub fn LLVMDisposeRelocationIterator(RI: LLVMRelocationIteratorRef);
114 pub fn LLVMIsRelocationIteratorAtEnd(
115 Section: LLVMSectionIteratorRef,
116 RI: LLVMRelocationIteratorRef,
117 ) -> LLVMBool;
118 pub fn LLVMMoveToNextRelocation(RI: LLVMRelocationIteratorRef);
119 pub fn LLVMGetSymbolName(SI: LLVMSymbolIteratorRef) -> *const ::libc::c_char;
120 pub fn LLVMGetSymbolAddress(SI: LLVMSymbolIteratorRef) -> u64;
121 pub fn LLVMGetSymbolSize(SI: LLVMSymbolIteratorRef) -> u64;
122 pub fn LLVMGetRelocationOffset(RI: LLVMRelocationIteratorRef) -> u64;
123 pub fn LLVMGetRelocationSymbol(RI: LLVMRelocationIteratorRef) -> LLVMSymbolIteratorRef;
124 pub fn LLVMGetRelocationType(RI: LLVMRelocationIteratorRef) -> u64;
125 pub fn LLVMGetRelocationTypeName(RI: LLVMRelocationIteratorRef) -> *const ::libc::c_char;
126 pub fn LLVMGetRelocationValueString(RI: LLVMRelocationIteratorRef) -> *const ::libc::c_char;
127
128 #[allow(deprecated)]
129 #[deprecated(since = "90.0.0", note = "Use LLVMCreateBinary instead")]
130 pub fn LLVMCreateObjectFile(MemBuf: LLVMMemoryBufferRef) -> LLVMObjectFileRef;
131 #[allow(deprecated)]
132 #[deprecated(since = "90.0.0", note = "Use LLVMDisposeBinary instead")]
133 pub fn LLVMDisposeObjectFile(ObjectFile: LLVMObjectFileRef);
134 #[allow(deprecated)]
135 #[deprecated(
136 since = "90.0.0",
137 note = "Use LLVMObjectFileCopySectionIterator instead"
138 )]
139 pub fn LLVMGetSections(ObjectFile: LLVMObjectFileRef) -> LLVMSectionIteratorRef;
140 #[allow(deprecated)]
141 #[deprecated(
142 since = "90.0.0",
143 note = "Use LLVMObjectFileIsSectionIteratorAtEnd instead"
144 )]
145 pub fn LLVMIsSectionIteratorAtEnd(
146 ObjectFile: LLVMObjectFileRef,
147 SI: LLVMSectionIteratorRef,
148 ) -> LLVMBool;
149 #[allow(deprecated)]
150 #[deprecated(
151 since = "90.0.0",
152 note = "Use LLVMObjectFileCopySymbolIterator instead"
153 )]
154 pub fn LLVMGetSymbols(ObjectFile: LLVMObjectFileRef) -> LLVMSymbolIteratorRef;
155 #[allow(deprecated)]
156 #[deprecated(
157 since = "90.0.0",
158 note = "Use LLVMObjectFileIsSymbolIteratorAtEnd instead"
159 )]
160 pub fn LLVMIsSymbolIteratorAtEnd(
161 ObjectFile: LLVMObjectFileRef,
162 SI: LLVMSymbolIteratorRef,
163 ) -> LLVMBool;
164}