From 105956920e982600e98efd3d2141ca91ae60f2bb Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Mon, 31 Aug 2026 10:29:52 -0700 Subject: [PATCH] [SVD] Fix derived peripherals not inheriting default properties Fixes https://github.com/Vector35/binaryninja-api/issues/8492 --- plugins/svd/src/mapper.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/svd/src/mapper.rs b/plugins/svd/src/mapper.rs index 4ec02b9e4c..e0a537168a 100644 --- a/plugins/svd/src/mapper.rs +++ b/plugins/svd/src/mapper.rs @@ -44,9 +44,7 @@ pub struct DeviceMapper { } impl DeviceMapper { - pub fn new(settings: LoadSettings, address_size: usize, mut device: Device) -> Self { - svd_parser::expand_properties(&mut device); - + pub fn new(settings: LoadSettings, address_size: usize, device: Device) -> Self { // TODO: Until https://github.com/rust-embedded/svd/issues/288 is fixed let mut new_device = device.clone(); new_device.peripherals.clear(); @@ -69,7 +67,11 @@ impl DeviceMapper { } // TODO: Return error instead. - let expanded_device = svd_parser::expand(&new_device).expect("Failed to expand device!"); + let mut expanded_device = + svd_parser::expand(&new_device).expect("Failed to expand device!"); + // Property expansion skips derived peripherals. Resolve derivedFrom first so registers + // supplied by a derived peripheral still inherit its or the device's default properties. + svd_parser::expand_properties(&mut expanded_device); Self { settings, device: expanded_device,