summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Ferrell <josh@vector35.com>2026-05-18 11:29:01 -0400
committerJosh Ferrell <josh@vector35.com>2026-05-18 11:29:01 -0400
commitf1a688a1e7fb6d962d8c9addaaefdfd59e5dd28b (patch)
treed203238087dcaea6fc55a6bdbe8c8782ad5e8c71
parent759f0eb73239dd747cd0b8eab55af01fa21837a4 (diff)
[DWARF Import] Use proper address width for unknown architectures
-rw-r--r--plugins/dwarf/dwarf_import/src/lib.rs19
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 {