use crate::{swift::SwiftRuntime, util::read_cstr_at};
pub(crate) fn lookup_field_name<'a>(rt: &SwiftRuntime<'a>, target_va: u64) -> Option<&'a str> {
if target_va == 0 {
return None;
}
if let Some(s) = rt.read_cstr(target_va) {
return Some(s);
}
let section = rt.reflstr.as_ref()?;
if target_va < section.vmaddr {
return None;
}
let off = target_va.checked_sub(section.vmaddr)?;
let off_usize = usize::try_from(off).ok()?;
if off_usize >= section.body.len() {
return None;
}
read_cstr_at(section.body, off_usize)
}