(
obj: &Object,
symbol_index: usize,
addend: i64,
override_color: Option<HoverItemColor>,
)
| 416 | } |
| 417 | |
| 418 | pub fn symbol_hover( |
| 419 | obj: &Object, |
| 420 | symbol_index: usize, |
| 421 | addend: i64, |
| 422 | override_color: Option<HoverItemColor>, |
| 423 | ) -> Vec<HoverItem> { |
| 424 | let Some(symbol) = obj.symbols.get(symbol_index) else { |
| 425 | return Vec::new(); |
| 426 | }; |
| 427 | let addend_str = match addend.cmp(&0i64) { |
| 428 | Ordering::Greater => format!("+{addend:x}"), |
| 429 | Ordering::Less => format!("-{:x}", -addend), |
| 430 | _ => String::new(), |
| 431 | }; |
| 432 | let mut out = Vec::new(); |
| 433 | out.push(HoverItem::Text { |
| 434 | label: "Name".into(), |
| 435 | value: format!("{}{}", symbol.name, addend_str), |
| 436 | color: override_color.clone().unwrap_or_default(), |
| 437 | }); |
| 438 | if let Some(demangled_name) = &symbol.demangled_name { |
| 439 | out.push(HoverItem::Text { |
| 440 | label: "Demangled".into(), |
| 441 | value: demangled_name.into(), |
| 442 | color: override_color.clone().unwrap_or_default(), |
| 443 | }); |
| 444 | } |
| 445 | if let Some(section) = symbol.section { |
| 446 | out.push(HoverItem::Text { |
| 447 | label: "Section".into(), |
| 448 | value: obj.sections[section].name.clone(), |
| 449 | color: override_color.clone().unwrap_or_default(), |
| 450 | }); |
| 451 | out.push(HoverItem::Text { |
| 452 | label: "Address".into(), |
| 453 | value: format!("{:x}{}", symbol.address, addend_str), |
| 454 | color: override_color.clone().unwrap_or_default(), |
| 455 | }); |
| 456 | if symbol.flags.contains(SymbolFlag::SizeInferred) { |
| 457 | out.push(HoverItem::Text { |
| 458 | label: "Size".into(), |
| 459 | value: format!("{:x} (inferred)", symbol.size), |
| 460 | color: override_color.clone().unwrap_or_default(), |
| 461 | }); |
| 462 | } else { |
| 463 | out.push(HoverItem::Text { |
| 464 | label: "Size".into(), |
| 465 | value: format!("{:x}", symbol.size), |
| 466 | color: override_color.clone().unwrap_or_default(), |
| 467 | }); |
| 468 | } |
| 469 | if let Some(align) = symbol.align { |
| 470 | out.push(HoverItem::Text { |
| 471 | label: "Alignment".into(), |
| 472 | value: align.get().to_string(), |
| 473 | color: override_color.clone().unwrap_or_default(), |
| 474 | }); |
| 475 | } |
no test coverage detected