use gimli;
use twiggy_traits as traits;
use super::FallilbleOption;
pub fn item_name<R>(
die: &gimli::DebuggingInformationEntry<R, R::Offset>,
dwarf: &gimli::Dwarf<R>,
unit: &gimli::Unit<R>,
) -> FallilbleOption<String>
where
R: gimli::Reader,
{
let attr: Option<gimli::read::AttributeValue<R>> =
match die.attr_value(gimli::DW_AT_linkage_name)? {
x @ Some(_) => x,
None => die.attr_value(gimli::DW_AT_name)?,
};
attr.map(|attr| -> Result<String, traits::Error> {
Ok(
dwarf
.attr_string(unit, attr)?
.to_string()? .to_string(), )
})
.transpose()
}