MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / demangle_llvm

Function demangle_llvm

rust/src/demangle.rs:61–88  ·  view source on GitHub ↗
(mangled_name: S, simplify: bool)

Source from the content-addressed store, hash-verified

59}
60
61pub fn demangle_llvm<S: BnStrCompatible>(mangled_name: S, simplify: bool) -> Option<QualifiedName> {
62 let mangled_name_bwn = mangled_name.into_bytes_with_nul();
63 let mangled_name_ptr = mangled_name_bwn.as_ref();
64 let mut out_name: *mut *mut std::os::raw::c_char = std::ptr::null_mut();
65 let mut out_size: usize = 0;
66 let res = unsafe {
67 BNDemangleLLVM(
68 mangled_name_ptr.as_ptr() as *const c_char,
69 &mut out_name,
70 &mut out_size,
71 simplify,
72 )
73 };
74
75 match res {
76 true => {
77 assert!(!out_name.is_null());
78 let names: Vec<_> = unsafe { ArrayGuard::<BnString>::new(out_name, out_size, ()) }
79 .iter()
80 .map(str::to_string)
81 .collect();
82 unsafe { BNFreeDemangledName(&mut out_name, out_size) };
83
84 Some(names.into())
85 }
86 false => None,
87 }
88}
89
90pub fn demangle_gnu3<S: BnStrCompatible>(
91 arch: &CoreArchitecture,

Callers 1

test_demangler_simpleFunction · 0.50

Calls 4

into_bytes_with_nulMethod · 0.80
mapMethod · 0.80
as_refMethod · 0.45
iterMethod · 0.45

Tested by 1

test_demangler_simpleFunction · 0.40