1#![allow(non_camel_case_types)]
2use llvm_bitcode::BitStreamReader;
3use llvm_bitcode::bitcode::Signature;
4use llvm_bitcode::read::BlockItem;
5use llvm_bitcode::read::BlockIter;
6use llvm_bitcode::read::Error;
7use num_enum::TryFromPrimitive;
8
9fn main() {
10 let path = std::env::args()
11 .nth(1)
12 .expect("Provide file path to a .bc file");
13 let file = std::fs::read(&path).unwrap();
14
15 let mut reader = BitStreamReader::new();
16 let (sig, bitcode) = Signature::parse(&file).unwrap();
17
18 println!(
19 "<BITCODE_WRAPPER_HEADER Magic=0x{:08x} Version=0x{:08x} Offset=0x{:08x} Size=0x{:08x} CPUType=0x{:08x}/>",
20 sig.magic, sig.version, sig.offset, sig.size, sig.cpu_type
21 );
22 iter_block(reader.iter_bitcode(bitcode), 0).unwrap();
23}
24
25fn iter_block(mut block: BlockIter, depth: usize) -> Result<(), Error> {
26 let outer_block_id = block.id;
27 while let Some(b) = block.next()? {
28 match b {
29 BlockItem::Block(b) => {
30 let tag_name = block_tag_name(b.id as _);
31 println!(
32 "{:indent$}<{tag_name} NumWords={nw} BlockCodeSize={ab}>",
33 "",
34 nw = b.debug_data_len().unwrap_or(0) / 4,
35 ab = b.debug_abbrev_width(),
36 indent = depth * 2
37 );
38 iter_block(b, depth + 1)?;
39 println!("{:indent$}</{tag_name}>", "", indent = depth * 2);
40 }
41 BlockItem::Record(mut r) => {
42 let tag_name = record_tag_name(outer_block_id as _, r.id as _);
43 print!("{:indent$}<{tag_name}", "", indent = depth * 2);
44 if let Some(a) = r.debug_abbrev_id() {
45 print!(" abbrevid={a}");
46 }
47 let fields = r
48 .by_ref()
49 .map(|f| f.map(|f| f as i64))
50 .collect::<Result<Vec<_>, _>>()?;
51 for (i, &op) in fields.iter().enumerate() {
52 print!(" op{i}={op}");
53 }
54 let payload: Result<_, _> = r.payload();
55 match payload {
56 Ok(Some(llvm_bitcode::bitcode::Payload::Array(a))) => {
57 for (i, op) in a.iter().enumerate() {
58 print!(" op{}={op}", i + fields.len());
59 }
60 if !a.is_empty() && a.iter().all(|&c| (c as u8) >= 0x20 && (c as u8) < 0x7F)
61 {
62 let s: String = a.iter().map(|&c| c as u8 as char).collect();
64 println!("/> record string = '{s}'");
65 } else {
66 println!("/>");
67 }
68 }
69 Ok(Some(llvm_bitcode::bitcode::Payload::Char6String(s))) => {
70 for (i, op) in s.chars().enumerate() {
71 print!(" op{}={}", i + fields.len(), op as u32);
72 }
73 if s.is_empty() {
74 println!("/>");
75 } else {
76 println!("/> record string = '{s}'");
77 }
78 }
79 Ok(None) => {
80 if r.debug_abbrev_id().is_some()
81 && fields.len() > 1
82 && fields.iter().skip(1).all(|&c| (0x20..0x7F).contains(&c))
83 {
84 let s: String =
85 fields.iter().skip(1).map(|&c| c as u8 as char).collect();
86 println!("/> record string = '{s}'");
87 } else {
88 println!("/>");
89 }
90 }
91 Ok(Some(llvm_bitcode::bitcode::Payload::Blob(b))) => {
92 if b.len() < 10000 && b.iter().all(|&c| (0x20..0x7F).contains(&c)) {
93 println!("/> blob data = {}", String::from_utf8_lossy(&b));
94 } else {
95 print!("/> blob data = ");
96 if b.len() > 50 {
97 print!("unprintable, {} bytes.", b.len());
98 } else {
99 print!("'");
100 for b in b {
101 print!("{b:02x}");
102 }
103 print!("'");
104 }
105 println!();
106 }
107 }
108 Err(err) => print!("/> payload_err={err}"),
109 }
110 }
111 }
112 }
113 Ok(())
114}
115
116fn block_tag_name(id: u32) -> &'static str {
117 use Blocks::*;
118 match Blocks::try_from(id).unwrap() {
119 MODULE_BLOCK_ID => "MODULE_BLOCK",
120 PARAMATTR_BLOCK_ID => "PARAMATTR_BLOCK",
121 PARAMATTR_GROUP_BLOCK_ID => "PARAMATTR_GROUP_BLOCK_ID",
122 CONSTANTS_BLOCK_ID => "CONSTANTS_BLOCK",
123 FUNCTION_BLOCK_ID => "FUNCTION_BLOCK",
124 IDENTIFICATION_BLOCK_ID => "IDENTIFICATION_BLOCK_ID",
125 VALUE_SYMTAB_BLOCK_ID => "VALUE_SYMTAB",
126 METADATA_BLOCK_ID => "METADATA_BLOCK",
127 METADATA_ATTACHMENT_ID => "METADATA_ATTACHMENT_BLOCK",
128 TYPE_BLOCK_ID_NEW => "TYPE_BLOCK_ID",
129 USELIST_BLOCK_ID => "USELIST_BLOCK",
130 MODULE_STRTAB_BLOCK_ID => "MODULE_STRTAB_BLOCK",
131 GLOBALVAL_SUMMARY_BLOCK_ID => "GLOBALVAL_SUMMARY_BLOCK",
132 OPERAND_BUNDLE_TAGS_BLOCK_ID => "OPERAND_BUNDLE_TAGS_BLOCK",
133 METADATA_KIND_BLOCK_ID => "METADATA_KIND_BLOCK",
134 STRTAB_BLOCK_ID => "STRTAB_BLOCK",
135 FULL_LTO_GLOBALVAL_SUMMARY_BLOCK_ID => "FULL_LTO_GLOBALVAL_SUMMARY_BLOCK",
136 SYMTAB_BLOCK_ID => "SYMTAB_BLOCK",
137 SYNC_SCOPE_NAMES_BLOCK_ID => "UnknownBlock26", }
139}
140
141fn record_tag_name(block: u32, record: u32) -> &'static str {
142 match Blocks::try_from(block).unwrap() {
143 Blocks::MODULE_BLOCK_ID => match ModuleCodes::try_from(record).unwrap() {
144 ModuleCodes::MODULE_CODE_VERSION => "VERSION",
145 ModuleCodes::MODULE_CODE_TRIPLE => "TRIPLE",
146 ModuleCodes::MODULE_CODE_DATALAYOUT => "DATALAYOUT",
147 ModuleCodes::MODULE_CODE_ASM => "ASM",
148 ModuleCodes::MODULE_CODE_SECTIONNAME => "SECTIONNAME",
149 ModuleCodes::MODULE_CODE_DEPLIB => "DEPLIB",
150 ModuleCodes::MODULE_CODE_GLOBALVAR => "GLOBALVAR",
151 ModuleCodes::MODULE_CODE_FUNCTION => "FUNCTION",
152 ModuleCodes::MODULE_CODE_ALIAS => "ALIAS",
153 ModuleCodes::MODULE_CODE_GCNAME => "GCNAME",
154 ModuleCodes::MODULE_CODE_COMDAT => "COMDAT",
155 ModuleCodes::MODULE_CODE_VSTOFFSET => "VSTOFFSET",
156 ModuleCodes::MODULE_CODE_METADATA_VALUES_UNUSED => "METADATA_VALUES_UNUSED",
157 ModuleCodes::MODULE_CODE_SOURCE_FILENAME => "SOURCE_FILENAME",
158 ModuleCodes::MODULE_CODE_HASH => "HASH",
159 ModuleCodes::MODULE_CODE_ALIAS_OLD | ModuleCodes::MODULE_CODE_IFUNC => todo!(),
160 },
161 Blocks::IDENTIFICATION_BLOCK_ID => match IdentificationCodes::try_from(record).unwrap() {
162 IdentificationCodes::IDENTIFICATION_CODE_STRING => "STRING",
163 IdentificationCodes::IDENTIFICATION_CODE_EPOCH => "EPOCH",
164 },
165 crate::Blocks::PARAMATTR_GROUP_BLOCK_ID | crate::Blocks::PARAMATTR_BLOCK_ID => {
166 match AttributeCodes::try_from(record).unwrap() {
167 AttributeCodes::PARAMATTR_CODE_ENTRY_OLD => "ENTRY_OLD",
168 AttributeCodes::PARAMATTR_CODE_ENTRY => "ENTRY",
169 AttributeCodes::PARAMATTR_GRP_CODE_ENTRY => "ENTRY",
170 }
171 }
172 Blocks::TYPE_BLOCK_ID_NEW => match TypeCodes::try_from(record).unwrap() {
173 TypeCodes::TYPE_CODE_NUMENTRY => "NUMENTRY",
174 TypeCodes::TYPE_CODE_VOID => "VOID",
175 TypeCodes::TYPE_CODE_FLOAT => "FLOAT",
176 TypeCodes::TYPE_CODE_DOUBLE => "DOUBLE",
177 TypeCodes::TYPE_CODE_LABEL => "LABEL",
178 TypeCodes::TYPE_CODE_OPAQUE => "OPAQUE",
179 TypeCodes::TYPE_CODE_INTEGER => "INTEGER",
180 TypeCodes::TYPE_CODE_POINTER => "POINTER",
181 TypeCodes::TYPE_CODE_HALF => "HALF",
182 TypeCodes::TYPE_CODE_ARRAY => "ARRAY",
183 TypeCodes::TYPE_CODE_VECTOR => "VECTOR",
184 TypeCodes::TYPE_CODE_X86_FP80 => "X86_FP80",
185 TypeCodes::TYPE_CODE_FP128 => "FP128",
186 TypeCodes::TYPE_CODE_PPC_FP128 => "PPC_FP128",
187 TypeCodes::TYPE_CODE_METADATA => "METADATA",
188 TypeCodes::TYPE_CODE_X86_MMX => "X86_MMX",
189 TypeCodes::TYPE_CODE_STRUCT_ANON => "STRUCT_ANON",
190 TypeCodes::TYPE_CODE_STRUCT_NAME => "STRUCT_NAME",
191 TypeCodes::TYPE_CODE_STRUCT_NAMED => "STRUCT_NAMED",
192 TypeCodes::TYPE_CODE_FUNCTION => "FUNCTION",
193 TypeCodes::TYPE_CODE_TOKEN => "TOKEN",
194 TypeCodes::TYPE_CODE_BFLOAT => "BFLOAT",
195 TypeCodes::TYPE_CODE_FUNCTION_OLD => "FUNCTION_OLD",
196 TypeCodes::TYPE_CODE_X86_AMX => "X86_AMX",
197 TypeCodes::TYPE_CODE_OPAQUE_POINTER => "UnknownCode25", TypeCodes::TYPE_CODE_TARGET_TYPE => "TARGET_TYPE",
199 },
200 Blocks::CONSTANTS_BLOCK_ID => match ConstantsCodes::try_from(record).unwrap() {
201 ConstantsCodes::CST_CODE_SETTYPE => "SETTYPE",
202 ConstantsCodes::CST_CODE_NULL => "NULL",
203 ConstantsCodes::CST_CODE_UNDEF => "UNDEF",
204 ConstantsCodes::CST_CODE_INTEGER => "INTEGER",
205 ConstantsCodes::CST_CODE_WIDE_INTEGER => "WIDE_INTEGER",
206 ConstantsCodes::CST_CODE_FLOAT => "FLOAT",
207 ConstantsCodes::CST_CODE_AGGREGATE => "AGGREGATE",
208 ConstantsCodes::CST_CODE_STRING => "STRING",
209 ConstantsCodes::CST_CODE_CSTRING => "CSTRING",
210 ConstantsCodes::CST_CODE_CE_BINOP => "CE_BINOP",
211 ConstantsCodes::CST_CODE_CE_CAST => "CE_CAST",
212 ConstantsCodes::CST_CODE_CE_GEP => "CE_GEP",
213 ConstantsCodes::CST_CODE_CE_INBOUNDS_GEP => "CE_INBOUNDS_GEP",
214 ConstantsCodes::CST_CODE_CE_SELECT => "CE_SELECT",
215 ConstantsCodes::CST_CODE_CE_EXTRACTELT => "CE_EXTRACTELT",
216 ConstantsCodes::CST_CODE_CE_INSERTELT => "CE_INSERTELT",
217 ConstantsCodes::CST_CODE_CE_SHUFFLEVEC => "CE_SHUFFLEVEC",
218 ConstantsCodes::CST_CODE_CE_CMP => "CE_CMP",
219 ConstantsCodes::CST_CODE_INLINEASM => "INLINEASM",
220 ConstantsCodes::CST_CODE_CE_SHUFVEC_EX => "CE_SHUFVEC_EX",
221 ConstantsCodes::CST_CODE_CE_UNOP => "CE_UNOP",
222 ConstantsCodes::CST_CODE_DSO_LOCAL_EQUIVALENT => "DSO_LOCAL_EQUIVALENT",
223 ConstantsCodes::CST_CODE_NO_CFI_VALUE => "NO_CFI_VALUE",
224 ConstantsCodes::CST_CODE_PTRAUTH => "PTRAUTH",
225 ConstantsCodes::CST_CODE_BLOCKADDRESS => "BLOCKADDRESS",
226 ConstantsCodes::CST_CODE_DATA => "DATA",
227 ConstantsCodes::CST_CODE_CE_GEP_OLD => "CE_GEP_OLD",
228 ConstantsCodes::CST_CODE_INLINEASM_OLD => "INLINEASM_OLD",
229 ConstantsCodes::CST_CODE_INLINEASM_OLD2 => "INLINEASM_OLD2",
230 ConstantsCodes::CST_CODE_CE_GEP_WITH_INRANGE_INDEX_OLD => {
231 "CE_GEP_WITH_INRANGE_INDEX_OLD"
232 }
233 ConstantsCodes::CST_CODE_POISON => "UnknownCode26", ConstantsCodes::CST_CODE_INLINEASM_OLD3 => "INLINEASM_OLD3",
235 ConstantsCodes::CST_CODE_CE_GEP_WITH_INRANGE => "CE_GEP_WITH_INRANGE",
236 },
237 Blocks::FUNCTION_BLOCK_ID => match FunctionCodes::try_from(record).unwrap() {
238 FunctionCodes::FUNC_CODE_DECLAREBLOCKS => "DECLAREBLOCKS",
239 FunctionCodes::FUNC_CODE_INST_BINOP => "INST_BINOP",
240 FunctionCodes::FUNC_CODE_INST_CAST => "INST_CAST",
241 FunctionCodes::FUNC_CODE_INST_GEP_OLD => "INST_GEP_OLD",
242 FunctionCodes::FUNC_CODE_INST_INBOUNDS_GEP_OLD => "INST_INBOUNDS_GEP_OLD",
243 FunctionCodes::FUNC_CODE_INST_SELECT => "INST_SELECT",
244 FunctionCodes::FUNC_CODE_INST_EXTRACTELT => "INST_EXTRACTELT",
245 FunctionCodes::FUNC_CODE_INST_INSERTELT => "INST_INSERTELT",
246 FunctionCodes::FUNC_CODE_INST_SHUFFLEVEC => "INST_SHUFFLEVEC",
247 FunctionCodes::FUNC_CODE_INST_CMP => "INST_CMP",
248 FunctionCodes::FUNC_CODE_INST_RET => "INST_RET",
249 FunctionCodes::FUNC_CODE_INST_BR => "INST_BR",
250 FunctionCodes::FUNC_CODE_INST_SWITCH => "INST_SWITCH",
251 FunctionCodes::FUNC_CODE_INST_INVOKE => "INST_INVOKE",
252 FunctionCodes::FUNC_CODE_INST_UNOP => "INST_UNOP",
253 FunctionCodes::FUNC_CODE_INST_UNREACHABLE => "INST_UNREACHABLE",
254 FunctionCodes::FUNC_CODE_INST_CLEANUPRET => "INST_CLEANUPRET",
255 FunctionCodes::FUNC_CODE_INST_CATCHRET => "INST_CATCHRET",
256 FunctionCodes::FUNC_CODE_INST_CATCHPAD => "INST_CATCHPAD",
257 FunctionCodes::FUNC_CODE_INST_PHI => "INST_PHI",
258 FunctionCodes::FUNC_CODE_INST_ALLOCA => "INST_ALLOCA",
259 FunctionCodes::FUNC_CODE_INST_LOAD => "INST_LOAD",
260 FunctionCodes::FUNC_CODE_INST_VAARG => "INST_VAARG",
261 FunctionCodes::FUNC_CODE_INST_STORE => "INST_STORE",
262 FunctionCodes::FUNC_CODE_INST_EXTRACTVAL => "INST_EXTRACTVAL",
263 FunctionCodes::FUNC_CODE_INST_INSERTVAL => "INST_INSERTVAL",
264 FunctionCodes::FUNC_CODE_INST_CMP2 => "INST_CMP2",
265 FunctionCodes::FUNC_CODE_INST_VSELECT => "INST_VSELECT",
266 FunctionCodes::FUNC_CODE_DEBUG_LOC_AGAIN => "DEBUG_LOC_AGAIN",
267 FunctionCodes::FUNC_CODE_INST_CALL => "INST_CALL",
268 FunctionCodes::FUNC_CODE_DEBUG_LOC => "DEBUG_LOC",
269 FunctionCodes::FUNC_CODE_INST_GEP => "INST_GEP",
270 FunctionCodes::FUNC_CODE_OPERAND_BUNDLE => "OPERAND_BUNDLE",
271 FunctionCodes::FUNC_CODE_INST_FENCE => "INST_FENCE",
272 FunctionCodes::FUNC_CODE_INST_ATOMICRMW => "INST_ATOMICRMW",
273 FunctionCodes::FUNC_CODE_INST_LOADATOMIC => "INST_LOADATOMIC",
274 FunctionCodes::FUNC_CODE_INST_STOREATOMIC => "INST_STOREATOMIC",
275 FunctionCodes::FUNC_CODE_INST_CMPXCHG => "INST_CMPXCHG",
276 FunctionCodes::FUNC_CODE_INST_CALLBR => "INST_CALLBR",
277 FunctionCodes::FUNC_CODE_BLOCKADDR_USERS => "BLOCKADDR_USERS",
278 FunctionCodes::FUNC_CODE_DEBUG_RECORD_DECLARE => "DEBUG_RECORD_DECLARE",
279 FunctionCodes::FUNC_CODE_DEBUG_RECORD_VALUE => "DEBUG_RECORD_VALUE",
280 FunctionCodes::FUNC_CODE_DEBUG_RECORD_ASSIGN => "DEBUG_RECORD_ASSIGN",
281 FunctionCodes::FUNC_CODE_DEBUG_RECORD_VALUE_SIMPLE => "DEBUG_RECORD_VALUE_SIMPLE",
282 FunctionCodes::FUNC_CODE_DEBUG_RECORD_LABEL => "DEBUG_RECORD_LABEL",
283
284 FunctionCodes::FUNC_CODE_INST_STORE_OLD => "INST_STORE_OLD",
285 FunctionCodes::FUNC_CODE_INST_INDIRECTBR => "INST_INDIRECTBR",
286 FunctionCodes::FUNC_CODE_INST_CMPXCHG_OLD => "INST_CMPXCHG_OLD",
287 FunctionCodes::FUNC_CODE_INST_ATOMICRMW_OLD => "INST_ATOMICRMW_OLD",
288 FunctionCodes::FUNC_CODE_INST_RESUME => "UnknownCode39", FunctionCodes::FUNC_CODE_INST_LANDINGPAD_OLD => "INST_LANDINGPAD_OLD",
290 FunctionCodes::FUNC_CODE_INST_STOREATOMIC_OLD => "INST_STOREATOMIC_OLD",
291 FunctionCodes::FUNC_CODE_INST_LANDINGPAD => "UnknownCode47", FunctionCodes::FUNC_CODE_INST_CLEANUPPAD => "INST_CLEANUPPAD",
293 FunctionCodes::FUNC_CODE_INST_CATCHSWITCH => "INST_CATCHSWITCH",
294 FunctionCodes::FUNC_CODE_INST_FREEZE => "INST_FREEZE",
295 },
296 Blocks::VALUE_SYMTAB_BLOCK_ID => match ValueSymtabCodes::try_from(record).unwrap() {
297 ValueSymtabCodes::VST_CODE_ENTRY => "ENTRY",
298 ValueSymtabCodes::VST_CODE_BBENTRY => "BBENTRY",
299 ValueSymtabCodes::VST_CODE_FNENTRY => "FNENTRY",
300 ValueSymtabCodes::VST_CODE_COMBINED_ENTRY => "COMBINED_ENTRY",
301 },
302 Blocks::MODULE_STRTAB_BLOCK_ID => match ModulePathSymtabCodes::try_from(record).unwrap() {
303 ModulePathSymtabCodes::MST_CODE_ENTRY => "ENTRY",
304 ModulePathSymtabCodes::MST_CODE_HASH => "HASH",
305 },
306 crate::Blocks::GLOBALVAL_SUMMARY_BLOCK_ID
307 | crate::Blocks::FULL_LTO_GLOBALVAL_SUMMARY_BLOCK_ID => {
308 match GlobalValueSummarySymtabCodes::try_from(record).unwrap() {
309 GlobalValueSummarySymtabCodes::FS_PERMODULE => "PERMODULE",
310 GlobalValueSummarySymtabCodes::FS_PERMODULE_PROFILE => "PERMODULE_PROFILE",
311 GlobalValueSummarySymtabCodes::FS_PERMODULE_RELBF => "PERMODULE_RELBF",
312 GlobalValueSummarySymtabCodes::FS_PERMODULE_GLOBALVAR_INIT_REFS => {
313 "PERMODULE_GLOBALVAR_INIT_REFS"
314 }
315 GlobalValueSummarySymtabCodes::FS_PERMODULE_VTABLE_GLOBALVAR_INIT_REFS => {
316 "PERMODULE_VTABLE_GLOBALVAR_INIT_REFS"
317 }
318 GlobalValueSummarySymtabCodes::FS_COMBINED => "COMBINED",
319 GlobalValueSummarySymtabCodes::FS_COMBINED_PROFILE => "COMBINED_PROFILE",
320 GlobalValueSummarySymtabCodes::FS_COMBINED_GLOBALVAR_INIT_REFS => {
321 "COMBINED_GLOBALVAR_INIT_REFS"
322 }
323 GlobalValueSummarySymtabCodes::FS_ALIAS => "ALIAS",
324 GlobalValueSummarySymtabCodes::FS_COMBINED_ALIAS => "COMBINED_ALIAS",
325 GlobalValueSummarySymtabCodes::FS_COMBINED_ORIGINAL_NAME => {
326 "COMBINED_ORIGINAL_NAME"
327 }
328 GlobalValueSummarySymtabCodes::FS_VERSION => "VERSION",
329 GlobalValueSummarySymtabCodes::FS_FLAGS => "FLAGS",
330 GlobalValueSummarySymtabCodes::FS_TYPE_TESTS => "TYPE_TESTS",
331 GlobalValueSummarySymtabCodes::FS_TYPE_TEST_ASSUME_VCALLS => {
332 "TYPE_TEST_ASSUME_VCALLS"
333 }
334 GlobalValueSummarySymtabCodes::FS_TYPE_CHECKED_LOAD_VCALLS => {
335 "TYPE_CHECKED_LOAD_VCALLS"
336 }
337 GlobalValueSummarySymtabCodes::FS_TYPE_TEST_ASSUME_CONST_VCALL => {
338 "TYPE_TEST_ASSUME_CONST_VCALL"
339 }
340 GlobalValueSummarySymtabCodes::FS_TYPE_CHECKED_LOAD_CONST_VCALL => {
341 "TYPE_CHECKED_LOAD_CONST_VCALL"
342 }
343 GlobalValueSummarySymtabCodes::FS_VALUE_GUID => "VALUE_GUID",
344 GlobalValueSummarySymtabCodes::FS_CFI_FUNCTION_DEFS => "CFI_FUNCTION_DEFS",
345 GlobalValueSummarySymtabCodes::FS_CFI_FUNCTION_DECLS => "CFI_FUNCTION_DECLS",
346 GlobalValueSummarySymtabCodes::FS_TYPE_ID => "TYPE_ID",
347 GlobalValueSummarySymtabCodes::FS_TYPE_ID_METADATA => "TYPE_ID_METADATA",
348 GlobalValueSummarySymtabCodes::FS_BLOCK_COUNT => "BLOCK_COUNT",
349 GlobalValueSummarySymtabCodes::FS_PARAM_ACCESS => "PARAM_ACCESS",
350 GlobalValueSummarySymtabCodes::FS_PERMODULE_CALLSITE_INFO => {
351 "PERMODULE_CALLSITE_INFO"
352 }
353 GlobalValueSummarySymtabCodes::FS_PERMODULE_ALLOC_INFO => "PERMODULE_ALLOC_INFO",
354 GlobalValueSummarySymtabCodes::FS_COMBINED_CALLSITE_INFO => {
355 "COMBINED_CALLSITE_INFO"
356 }
357 GlobalValueSummarySymtabCodes::FS_COMBINED_ALLOC_INFO => "COMBINED_ALLOC_INFO",
358 GlobalValueSummarySymtabCodes::FS_STACK_IDS => "STACK_IDS",
359 GlobalValueSummarySymtabCodes::FS_ALLOC_CONTEXT_IDS => "ALLOC_CONTEXT_IDS",
360 GlobalValueSummarySymtabCodes::FS_CONTEXT_RADIX_TREE_ARRAY => {
361 "CONTEXT_RADIX_TREE_ARRAY"
362 }
363 }
364 }
365 crate::Blocks::METADATA_KIND_BLOCK_ID
366 | crate::Blocks::METADATA_BLOCK_ID
367 | Blocks::METADATA_ATTACHMENT_ID => match MetadataCodes::try_from(record).unwrap() {
368 MetadataCodes::METADATA_ATTACHMENT => "ATTACHMENT",
369 MetadataCodes::METADATA_STRING_OLD => "STRING_OLD",
370 MetadataCodes::METADATA_VALUE => "VALUE",
371 MetadataCodes::METADATA_NODE => "NODE",
372 MetadataCodes::METADATA_NAME => "NAME",
373 MetadataCodes::METADATA_DISTINCT_NODE => "DISTINCT_NODE",
374 MetadataCodes::METADATA_KIND => "KIND",
375 MetadataCodes::METADATA_LOCATION => "LOCATION",
376 MetadataCodes::METADATA_OLD_NODE => "OLD_NODE",
377 MetadataCodes::METADATA_OLD_FN_NODE => "OLD_FN_NODE",
378 MetadataCodes::METADATA_NAMED_NODE => "NAMED_NODE",
379 MetadataCodes::METADATA_GENERIC_DEBUG => "GENERIC_DEBUG",
380 MetadataCodes::METADATA_SUBRANGE => "SUBRANGE",
381 MetadataCodes::METADATA_ENUMERATOR => "ENUMERATOR",
382 MetadataCodes::METADATA_BASIC_TYPE => "BASIC_TYPE",
383 MetadataCodes::METADATA_FILE => "FILE",
384 MetadataCodes::METADATA_DERIVED_TYPE => "DERIVED_TYPE",
385 MetadataCodes::METADATA_COMPOSITE_TYPE => "COMPOSITE_TYPE",
386 MetadataCodes::METADATA_SUBROUTINE_TYPE => "SUBROUTINE_TYPE",
387 MetadataCodes::METADATA_COMPILE_UNIT => "COMPILE_UNIT",
388 MetadataCodes::METADATA_SUBPROGRAM => "SUBPROGRAM",
389 MetadataCodes::METADATA_LEXICAL_BLOCK => "LEXICAL_BLOCK",
390 MetadataCodes::METADATA_LEXICAL_BLOCK_FILE => "LEXICAL_BLOCK_FILE",
391 MetadataCodes::METADATA_NAMESPACE => "NAMESPACE",
392 MetadataCodes::METADATA_TEMPLATE_TYPE => "TEMPLATE_TYPE",
393 MetadataCodes::METADATA_TEMPLATE_VALUE => "TEMPLATE_VALUE",
394 MetadataCodes::METADATA_GLOBAL_VAR => "GLOBAL_VAR",
395 MetadataCodes::METADATA_LOCAL_VAR => "LOCAL_VAR",
396 MetadataCodes::METADATA_EXPRESSION => "EXPRESSION",
397 MetadataCodes::METADATA_OBJC_PROPERTY => "OBJC_PROPERTY",
398 MetadataCodes::METADATA_IMPORTED_ENTITY => "IMPORTED_ENTITY",
399 MetadataCodes::METADATA_MODULE => "MODULE",
400 MetadataCodes::METADATA_MACRO => "MACRO",
401 MetadataCodes::METADATA_MACRO_FILE => "MACRO_FILE",
402 MetadataCodes::METADATA_STRINGS => "STRINGS",
403 MetadataCodes::METADATA_GLOBAL_DECL_ATTACHMENT => "GLOBAL_DECL_ATTACHMENT",
404 MetadataCodes::METADATA_GLOBAL_VAR_EXPR => "GLOBAL_VAR_EXPR",
405 MetadataCodes::METADATA_INDEX_OFFSET => "INDEX_OFFSET",
406 MetadataCodes::METADATA_INDEX => "INDEX",
407 MetadataCodes::METADATA_ARG_LIST => "ARG_LIST",
408 MetadataCodes::METADATA_LABEL => "LABEL",
409 MetadataCodes::METADATA_STRING_TYPE => "STRING_TYPE",
410 MetadataCodes::METADATA_COMMON_BLOCK => "COMMON_BLOCK",
411 MetadataCodes::METADATA_GENERIC_SUBRANGE => "GENERIC_SUBRANGE",
412 MetadataCodes::METADATA_ASSIGN_ID => "ASSIGN_ID",
413 },
414 Blocks::USELIST_BLOCK_ID => match UseListCodes::try_from(record).unwrap() {
415 UseListCodes::USELIST_CODE_DEFAULT => "DEFAULT",
416 UseListCodes::USELIST_CODE_BB => "BB",
417 },
418 Blocks::OPERAND_BUNDLE_TAGS_BLOCK_ID => {
419 match OperandBundleTagCode::try_from(record).unwrap() {
420 OperandBundleTagCode::OPERAND_BUNDLE_TAG => "OPERAND_BUNDLE_TAG",
421 }
422 }
423 Blocks::STRTAB_BLOCK_ID => match StrtabCodes::try_from(record).unwrap() {
424 StrtabCodes::STRTAB_BLOB => "BLOB",
425 },
426 Blocks::SYMTAB_BLOCK_ID => match SymtabCodes::try_from(record).unwrap() {
427 SymtabCodes::SYMTAB_BLOB => "BLOB",
428 },
429 Blocks::SYNC_SCOPE_NAMES_BLOCK_ID => "UnknownCode1",
430 }
431}
432
433#[derive(TryFromPrimitive)]
434#[repr(u32)]
435enum Blocks {
436 MODULE_BLOCK_ID = 8,
437 PARAMATTR_BLOCK_ID,
438 PARAMATTR_GROUP_BLOCK_ID,
439 CONSTANTS_BLOCK_ID,
440 FUNCTION_BLOCK_ID,
441 IDENTIFICATION_BLOCK_ID,
442 VALUE_SYMTAB_BLOCK_ID,
443 METADATA_BLOCK_ID,
444 METADATA_ATTACHMENT_ID,
445 TYPE_BLOCK_ID_NEW,
446 USELIST_BLOCK_ID,
447 MODULE_STRTAB_BLOCK_ID,
448 GLOBALVAL_SUMMARY_BLOCK_ID,
449 OPERAND_BUNDLE_TAGS_BLOCK_ID,
450 METADATA_KIND_BLOCK_ID,
451 STRTAB_BLOCK_ID,
452 FULL_LTO_GLOBALVAL_SUMMARY_BLOCK_ID,
453 SYMTAB_BLOCK_ID,
454 SYNC_SCOPE_NAMES_BLOCK_ID,
455}
456
457#[derive(TryFromPrimitive)]
460#[repr(u32)]
461enum IdentificationCodes {
462 IDENTIFICATION_CODE_STRING = 1, IDENTIFICATION_CODE_EPOCH = 2, }
465
466#[derive(TryFromPrimitive)]
473#[repr(u32)]
474enum EpochCode {
475 BITCODE_CURRENT_EPOCH = 0,
476}
477
478#[derive(TryFromPrimitive)]
480#[repr(u32)]
481enum ModuleCodes {
482 MODULE_CODE_VERSION = 1, MODULE_CODE_TRIPLE = 2, MODULE_CODE_DATALAYOUT = 3, MODULE_CODE_ASM = 4, MODULE_CODE_SECTIONNAME = 5, MODULE_CODE_DEPLIB = 6, MODULE_CODE_GLOBALVAR = 7,
494
495 MODULE_CODE_FUNCTION = 8,
498
499 MODULE_CODE_ALIAS_OLD = 9,
501
502 MODULE_CODE_GCNAME = 11, MODULE_CODE_COMDAT = 12, MODULE_CODE_VSTOFFSET = 13, MODULE_CODE_ALIAS = 14,
509
510 MODULE_CODE_METADATA_VALUES_UNUSED = 15,
511
512 MODULE_CODE_SOURCE_FILENAME = 16,
514
515 MODULE_CODE_HASH = 17,
517
518 MODULE_CODE_IFUNC = 18,
520}
521
522#[derive(TryFromPrimitive)]
524#[repr(u32)]
525enum AttributeCodes {
526 PARAMATTR_CODE_ENTRY_OLD = 1, PARAMATTR_CODE_ENTRY = 2, PARAMATTR_GRP_CODE_ENTRY = 3, }
532
533#[derive(TryFromPrimitive)]
535#[repr(u32)]
536enum TypeCodes {
537 TYPE_CODE_NUMENTRY = 1, TYPE_CODE_VOID = 2, TYPE_CODE_FLOAT = 3, TYPE_CODE_DOUBLE = 4, TYPE_CODE_LABEL = 5, TYPE_CODE_OPAQUE = 6, TYPE_CODE_INTEGER = 7, TYPE_CODE_POINTER = 8, TYPE_CODE_FUNCTION_OLD = 9, TYPE_CODE_HALF = 10, TYPE_CODE_ARRAY = 11, TYPE_CODE_VECTOR = 12, TYPE_CODE_X86_FP80 = 13, TYPE_CODE_FP128 = 14, TYPE_CODE_PPC_FP128 = 15, TYPE_CODE_METADATA = 16, TYPE_CODE_X86_MMX = 17, TYPE_CODE_STRUCT_ANON = 18, TYPE_CODE_STRUCT_NAME = 19, TYPE_CODE_STRUCT_NAMED = 20, TYPE_CODE_FUNCTION = 21, TYPE_CODE_TOKEN = 22, TYPE_CODE_BFLOAT = 23, TYPE_CODE_X86_AMX = 24, TYPE_CODE_OPAQUE_POINTER = 25, TYPE_CODE_TARGET_TYPE = 26, }
581
582#[derive(TryFromPrimitive)]
583#[repr(u32)]
584enum OperandBundleTagCode {
585 OPERAND_BUNDLE_TAG = 1, }
587
588#[derive(TryFromPrimitive)]
589#[repr(u32)]
590enum SyncScopeNameCode {
591 SYNC_SCOPE_NAME = 1,
592}
593
594#[derive(TryFromPrimitive)]
596#[repr(u32)]
597enum ValueSymtabCodes {
598 VST_CODE_ENTRY = 1, VST_CODE_BBENTRY = 2, VST_CODE_FNENTRY = 3, VST_CODE_COMBINED_ENTRY = 5,
603}
604
605#[derive(TryFromPrimitive)]
607#[repr(u32)]
608enum ModulePathSymtabCodes {
609 MST_CODE_ENTRY = 1, MST_CODE_HASH = 2, }
612
613#[derive(TryFromPrimitive)]
616#[repr(u32)]
617enum GlobalValueSummarySymtabCodes {
618 FS_PERMODULE = 1,
621 FS_PERMODULE_PROFILE = 2,
625 FS_PERMODULE_GLOBALVAR_INIT_REFS = 3,
627 FS_COMBINED = 4,
630 FS_COMBINED_PROFILE = 5,
634 FS_COMBINED_GLOBALVAR_INIT_REFS = 6,
636 FS_ALIAS = 7,
638 FS_COMBINED_ALIAS = 8,
640 FS_COMBINED_ORIGINAL_NAME = 9,
642 FS_VERSION = 10,
644 FS_TYPE_TESTS = 11,
648 FS_TYPE_TEST_ASSUME_VCALLS = 12,
653 FS_TYPE_CHECKED_LOAD_VCALLS = 13,
658 FS_TYPE_TEST_ASSUME_CONST_VCALL = 14,
662 FS_TYPE_CHECKED_LOAD_CONST_VCALL = 15,
666 FS_VALUE_GUID = 16,
670 FS_CFI_FUNCTION_DEFS = 17,
674 FS_CFI_FUNCTION_DECLS = 18,
678 FS_PERMODULE_RELBF = 19,
683 FS_FLAGS = 20,
685 FS_TYPE_ID = 21,
691 FS_TYPE_ID_METADATA = 22,
705 FS_PERMODULE_VTABLE_GLOBALVAR_INIT_REFS = 23,
711 FS_BLOCK_COUNT = 24,
713 FS_PARAM_ACCESS = 25,
716 FS_PERMODULE_CALLSITE_INFO = 26,
719 FS_PERMODULE_ALLOC_INFO = 27,
723 FS_COMBINED_CALLSITE_INFO = 28,
727 FS_COMBINED_ALLOC_INFO = 29,
732 FS_STACK_IDS = 30,
735 FS_ALLOC_CONTEXT_IDS = 31,
744 FS_CONTEXT_RADIX_TREE_ARRAY = 32,
748}
749
750#[derive(TryFromPrimitive)]
751#[repr(u32)]
752enum MetadataCodes {
753 METADATA_STRING_OLD = 1, METADATA_VALUE = 2, METADATA_NODE = 3, METADATA_NAME = 4, METADATA_DISTINCT_NODE = 5, METADATA_KIND = 6, METADATA_LOCATION = 7, METADATA_OLD_NODE = 8, METADATA_OLD_FN_NODE = 9, METADATA_NAMED_NODE = 10, METADATA_ATTACHMENT = 11, METADATA_GENERIC_DEBUG = 12, METADATA_SUBRANGE = 13, METADATA_ENUMERATOR = 14, METADATA_BASIC_TYPE = 15, METADATA_FILE = 16, METADATA_DERIVED_TYPE = 17, METADATA_COMPOSITE_TYPE = 18, METADATA_SUBROUTINE_TYPE = 19, METADATA_COMPILE_UNIT = 20, METADATA_SUBPROGRAM = 21, METADATA_LEXICAL_BLOCK = 22, METADATA_LEXICAL_BLOCK_FILE = 23, METADATA_NAMESPACE = 24, METADATA_TEMPLATE_TYPE = 25, METADATA_TEMPLATE_VALUE = 26, METADATA_GLOBAL_VAR = 27, METADATA_LOCAL_VAR = 28, METADATA_EXPRESSION = 29, METADATA_OBJC_PROPERTY = 30, METADATA_IMPORTED_ENTITY = 31, METADATA_MODULE = 32, METADATA_MACRO = 33, METADATA_MACRO_FILE = 34, METADATA_STRINGS = 35, METADATA_GLOBAL_DECL_ATTACHMENT = 36, METADATA_GLOBAL_VAR_EXPR = 37, METADATA_INDEX_OFFSET = 38, METADATA_INDEX = 39, METADATA_LABEL = 40, METADATA_STRING_TYPE = 41, METADATA_COMMON_BLOCK = 44, METADATA_GENERIC_SUBRANGE = 45, METADATA_ARG_LIST = 46, METADATA_ASSIGN_ID = 47, }
801
802#[derive(TryFromPrimitive)]
805#[repr(u32)]
806enum ConstantsCodes {
807 CST_CODE_SETTYPE = 1, CST_CODE_NULL = 2, CST_CODE_UNDEF = 3, CST_CODE_INTEGER = 4, CST_CODE_WIDE_INTEGER = 5, CST_CODE_FLOAT = 6, CST_CODE_AGGREGATE = 7, CST_CODE_STRING = 8, CST_CODE_CSTRING = 9, CST_CODE_CE_BINOP = 10, CST_CODE_CE_CAST = 11, CST_CODE_CE_GEP_OLD = 12, CST_CODE_CE_SELECT = 13, CST_CODE_CE_EXTRACTELT = 14, CST_CODE_CE_INSERTELT = 15, CST_CODE_CE_SHUFFLEVEC = 16, CST_CODE_CE_CMP = 17, CST_CODE_INLINEASM_OLD = 18, CST_CODE_CE_SHUFVEC_EX = 19, CST_CODE_CE_INBOUNDS_GEP = 20, CST_CODE_BLOCKADDRESS = 21, CST_CODE_DATA = 22, CST_CODE_INLINEASM_OLD2 = 23, CST_CODE_CE_GEP_WITH_INRANGE_INDEX_OLD = 24, CST_CODE_CE_UNOP = 25, CST_CODE_POISON = 26, CST_CODE_DSO_LOCAL_EQUIVALENT = 27, CST_CODE_INLINEASM_OLD3 = 28, CST_CODE_NO_CFI_VALUE = 29, CST_CODE_INLINEASM = 30, CST_CODE_CE_GEP_WITH_INRANGE = 31, CST_CODE_CE_GEP = 32, CST_CODE_PTRAUTH = 33, }
848
849#[derive(TryFromPrimitive)]
852#[repr(u32)]
853enum FunctionCodes {
854 FUNC_CODE_DECLAREBLOCKS = 1, FUNC_CODE_INST_BINOP = 2, FUNC_CODE_INST_CAST = 3, FUNC_CODE_INST_GEP_OLD = 4, FUNC_CODE_INST_SELECT = 5, FUNC_CODE_INST_EXTRACTELT = 6, FUNC_CODE_INST_INSERTELT = 7, FUNC_CODE_INST_SHUFFLEVEC = 8, FUNC_CODE_INST_CMP = 9, FUNC_CODE_INST_RET = 10, FUNC_CODE_INST_BR = 11, FUNC_CODE_INST_SWITCH = 12, FUNC_CODE_INST_INVOKE = 13, FUNC_CODE_INST_UNREACHABLE = 15, FUNC_CODE_INST_PHI = 16, FUNC_CODE_INST_ALLOCA = 19, FUNC_CODE_INST_LOAD = 20, FUNC_CODE_INST_VAARG = 23, FUNC_CODE_INST_STORE_OLD = 24, FUNC_CODE_INST_EXTRACTVAL = 26, FUNC_CODE_INST_INSERTVAL = 27, FUNC_CODE_INST_CMP2 = 28, FUNC_CODE_INST_VSELECT = 29, FUNC_CODE_INST_INBOUNDS_GEP_OLD = 30, FUNC_CODE_INST_INDIRECTBR = 31, FUNC_CODE_DEBUG_LOC_AGAIN = 33, FUNC_CODE_INST_CALL = 34, FUNC_CODE_DEBUG_LOC = 35, FUNC_CODE_INST_FENCE = 36, FUNC_CODE_INST_CMPXCHG_OLD = 37, FUNC_CODE_INST_ATOMICRMW_OLD = 38, FUNC_CODE_INST_RESUME = 39, FUNC_CODE_INST_LANDINGPAD_OLD = 40, FUNC_CODE_INST_LOADATOMIC = 41, FUNC_CODE_INST_STOREATOMIC_OLD = 42, FUNC_CODE_INST_GEP = 43, FUNC_CODE_INST_STORE = 44, FUNC_CODE_INST_STOREATOMIC = 45, FUNC_CODE_INST_CMPXCHG = 46, FUNC_CODE_INST_LANDINGPAD = 47, FUNC_CODE_INST_CLEANUPRET = 48, FUNC_CODE_INST_CATCHRET = 49, FUNC_CODE_INST_CATCHPAD = 50, FUNC_CODE_INST_CLEANUPPAD = 51, FUNC_CODE_INST_CATCHSWITCH = 52, FUNC_CODE_OPERAND_BUNDLE = 55, FUNC_CODE_INST_UNOP = 56, FUNC_CODE_INST_CALLBR = 57, FUNC_CODE_INST_FREEZE = 58, FUNC_CODE_INST_ATOMICRMW = 59, FUNC_CODE_BLOCKADDR_USERS = 60, FUNC_CODE_DEBUG_RECORD_VALUE = 61, FUNC_CODE_DEBUG_RECORD_DECLARE = 62, FUNC_CODE_DEBUG_RECORD_ASSIGN = 63, FUNC_CODE_DEBUG_RECORD_VALUE_SIMPLE = 64, FUNC_CODE_DEBUG_RECORD_LABEL = 65, }
944
945#[derive(TryFromPrimitive)]
946#[repr(u32)]
947enum UseListCodes {
948 USELIST_CODE_DEFAULT = 1, USELIST_CODE_BB = 2, }
951
952#[derive(TryFromPrimitive)]
953#[repr(u32)]
954enum AttributeKindCodes {
955 ATTR_KIND_ALIGNMENT = 1,
957 ATTR_KIND_ALWAYS_INLINE = 2,
958 ATTR_KIND_BY_VAL = 3,
959 ATTR_KIND_INLINE_HINT = 4,
960 ATTR_KIND_IN_REG = 5,
961 ATTR_KIND_MIN_SIZE = 6,
962 ATTR_KIND_NAKED = 7,
963 ATTR_KIND_NEST = 8,
964 ATTR_KIND_NO_ALIAS = 9,
965 ATTR_KIND_NO_BUILTIN = 10,
966 ATTR_KIND_NO_CAPTURE = 11,
967 ATTR_KIND_NO_DUPLICATE = 12,
968 ATTR_KIND_NO_IMPLICIT_FLOAT = 13,
969 ATTR_KIND_NO_INLINE = 14,
970 ATTR_KIND_NON_LAZY_BIND = 15,
971 ATTR_KIND_NO_RED_ZONE = 16,
972 ATTR_KIND_NO_RETURN = 17,
973 ATTR_KIND_NO_UNWIND = 18,
974 ATTR_KIND_OPTIMIZE_FOR_SIZE = 19,
975 ATTR_KIND_READ_NONE = 20,
976 ATTR_KIND_READ_ONLY = 21,
977 ATTR_KIND_RETURNED = 22,
978 ATTR_KIND_RETURNS_TWICE = 23,
979 ATTR_KIND_S_EXT = 24,
980 ATTR_KIND_STACK_ALIGNMENT = 25,
981 ATTR_KIND_STACK_PROTECT = 26,
982 ATTR_KIND_STACK_PROTECT_REQ = 27,
983 ATTR_KIND_STACK_PROTECT_STRONG = 28,
984 ATTR_KIND_STRUCT_RET = 29,
985 ATTR_KIND_SANITIZE_ADDRESS = 30,
986 ATTR_KIND_SANITIZE_THREAD = 31,
987 ATTR_KIND_SANITIZE_MEMORY = 32,
988 ATTR_KIND_UW_TABLE = 33,
989 ATTR_KIND_Z_EXT = 34,
990 ATTR_KIND_BUILTIN = 35,
991 ATTR_KIND_COLD = 36,
992 ATTR_KIND_OPTIMIZE_NONE = 37,
993 ATTR_KIND_IN_ALLOCA = 38,
994 ATTR_KIND_NON_NULL = 39,
995 ATTR_KIND_JUMP_TABLE = 40,
996 ATTR_KIND_DEREFERENCEABLE = 41,
997 ATTR_KIND_DEREFERENCEABLE_OR_NULL = 42,
998 ATTR_KIND_CONVERGENT = 43,
999 ATTR_KIND_SAFESTACK = 44,
1000 ATTR_KIND_ARGMEMONLY = 45,
1001 ATTR_KIND_SWIFT_SELF = 46,
1002 ATTR_KIND_SWIFT_ERROR = 47,
1003 ATTR_KIND_NO_RECURSE = 48,
1004 ATTR_KIND_INACCESSIBLEMEM_ONLY = 49,
1005 ATTR_KIND_INACCESSIBLEMEM_OR_ARGMEMONLY = 50,
1006 ATTR_KIND_ALLOC_SIZE = 51,
1007 ATTR_KIND_WRITEONLY = 52,
1008 ATTR_KIND_SPECULATABLE = 53,
1009 ATTR_KIND_STRICT_FP = 54,
1010 ATTR_KIND_SANITIZE_HWADDRESS = 55,
1011 ATTR_KIND_NOCF_CHECK = 56,
1012 ATTR_KIND_OPT_FOR_FUZZING = 57,
1013 ATTR_KIND_SHADOWCALLSTACK = 58,
1014 ATTR_KIND_SPECULATIVE_LOAD_HARDENING = 59,
1015 ATTR_KIND_IMMARG = 60,
1016 ATTR_KIND_WILLRETURN = 61,
1017 ATTR_KIND_NOFREE = 62,
1018 ATTR_KIND_NOSYNC = 63,
1019 ATTR_KIND_SANITIZE_MEMTAG = 64,
1020 ATTR_KIND_PREALLOCATED = 65,
1021 ATTR_KIND_NO_MERGE = 66,
1022 ATTR_KIND_NULL_POINTER_IS_VALID = 67,
1023 ATTR_KIND_NOUNDEF = 68,
1024 ATTR_KIND_BYREF = 69,
1025 ATTR_KIND_MUSTPROGRESS = 70,
1026 ATTR_KIND_NO_CALLBACK = 71,
1027 ATTR_KIND_HOT = 72,
1028 ATTR_KIND_NO_PROFILE = 73,
1029 ATTR_KIND_VSCALE_RANGE = 74,
1030 ATTR_KIND_SWIFT_ASYNC = 75,
1031 ATTR_KIND_NO_SANITIZE_COVERAGE = 76,
1032 ATTR_KIND_ELEMENTTYPE = 77,
1033 ATTR_KIND_DISABLE_SANITIZER_INSTRUMENTATION = 78,
1034 ATTR_KIND_NO_SANITIZE_BOUNDS = 79,
1035 ATTR_KIND_ALLOC_ALIGN = 80,
1036 ATTR_KIND_ALLOCATED_POINTER = 81,
1037 ATTR_KIND_ALLOC_KIND = 82,
1038 ATTR_KIND_PRESPLIT_COROUTINE = 83,
1039 ATTR_KIND_FNRETTHUNK_EXTERN = 84,
1040 ATTR_KIND_SKIP_PROFILE = 85,
1041 ATTR_KIND_MEMORY = 86,
1042 ATTR_KIND_NOFPCLASS = 87,
1043 ATTR_KIND_OPTIMIZE_FOR_DEBUGGING = 88,
1044 ATTR_KIND_WRITABLE = 89,
1045 ATTR_KIND_CORO_ONLY_DESTROY_WHEN_COMPLETE = 90,
1046 ATTR_KIND_DEAD_ON_UNWIND = 91,
1047 ATTR_KIND_RANGE = 92,
1048 ATTR_KIND_SANITIZE_NUMERICAL_STABILITY = 93,
1049 ATTR_KIND_INITIALIZES = 94,
1050 ATTR_KIND_HYBRID_PATCHABLE = 95,
1051 ATTR_KIND_SANITIZE_REALTIME = 96,
1052 ATTR_KIND_SANITIZE_REALTIME_BLOCKING = 97,
1053 ATTR_KIND_CORO_ELIDE_SAFE = 98,
1054 ATTR_KIND_NO_EXT = 99,
1055 ATTR_KIND_NO_DIVERGENCE_SOURCE = 100,
1056 ATTR_KIND_SANITIZE_TYPE = 101,
1057 ATTR_KIND_CAPTURES = 102,
1058}
1059
1060#[derive(TryFromPrimitive)]
1061#[repr(u32)]
1062enum ComdatSelectionKindCodes {
1063 COMDAT_SELECTION_KIND_ANY = 1,
1064 COMDAT_SELECTION_KIND_EXACT_MATCH = 2,
1065 COMDAT_SELECTION_KIND_LARGEST = 3,
1066 COMDAT_SELECTION_KIND_NO_DUPLICATES = 4,
1067 COMDAT_SELECTION_KIND_SAME_SIZE = 5,
1068}
1069
1070#[derive(TryFromPrimitive)]
1071#[repr(u32)]
1072enum StrtabCodes {
1073 STRTAB_BLOB = 1,
1074}
1075
1076#[derive(TryFromPrimitive)]
1077#[repr(u32)]
1078enum SymtabCodes {
1079 SYMTAB_BLOB = 1,
1080}