diff options
| author | Josh Ferrell <josh@vector35.com> | 2026-05-18 11:29:01 -0400 |
|---|---|---|
| committer | Josh Ferrell <josh@vector35.com> | 2026-05-18 11:29:01 -0400 |
| commit | f1a688a1e7fb6d962d8c9addaaefdfd59e5dd28b (patch) | |
| tree | d203238087dcaea6fc55a6bdbe8c8782ad5e8c71 /plugins/dwarf/dwarf_import | |
| parent | 759f0eb73239dd747cd0b8eab55af01fa21837a4 (diff) | |
[DWARF Import] Use proper address width for unknown architectures
Diffstat (limited to 'plugins/dwarf/dwarf_import')
| -rw-r--r-- | plugins/dwarf/dwarf_import/src/lib.rs | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/plugins/dwarf/dwarf_import/src/lib.rs b/plugins/dwarf/dwarf_import/src/lib.rs index a9e4bbd8..c98defb0 100644 --- a/plugins/dwarf/dwarf_import/src/lib.rs +++ b/plugins/dwarf/dwarf_import/src/lib.rs @@ -516,9 +516,12 @@ fn parse_range_data_offsets(file: &object::File) -> Result<IntervalMap<u64, i64> eh_frame.set_vendor(gimli::Vendor::AArch64); } - if let Some(address_size) = file.architecture().address_size() { - eh_frame.set_address_size(address_size.bytes()); - } + let address_size = file + .architecture() + .address_size() + .map(|s| s.bytes()) + .unwrap_or(if file.is_64() { 8 } else { 4 }); + eh_frame.set_address_size(address_size); parse_unwind_section(&file, eh_frame).map_err(|e| format!("Error parsing .eh_frame: {}", e)) } else if file.section_by_name(".debug_frame").is_some() { @@ -529,9 +532,13 @@ fn parse_range_data_offsets(file: &object::File) -> Result<IntervalMap<u64, i64> debug_frame.set_vendor(gimli::Vendor::AArch64); } - if let Some(address_size) = file.architecture().address_size() { - debug_frame.set_address_size(address_size.bytes()); - } + let address_size = file + .architecture() + .address_size() + .map(|s| s.bytes()) + .unwrap_or(if file.is_64() { 8 } else { 4 }); + debug_frame.set_address_size(address_size); + parse_unwind_section(&file, debug_frame) .map_err(|e| format!("Error parsing .debug_frame: {}", e)) } else { |
