@@ -152,6 +152,7 @@ pub struct ProtectionDomain {
152152 pub pp : bool ,
153153 pub passive : bool ,
154154 pub program_image : PathBuf ,
155+ pub program_image_for_symbols : Option < PathBuf > ,
155156 pub maps : Vec < SysMap > ,
156157 pub irqs : Vec < SysIrq > ,
157158 pub setvars : Vec < SysSetVar > ,
@@ -303,6 +304,7 @@ impl ProtectionDomain {
303304 let mut child_pds = Vec :: new ( ) ;
304305
305306 let mut program_image = None ;
307+ let mut program_image_for_symbols = None ;
306308 let mut virtual_machine = None ;
307309
308310 // Default to minimum priority
@@ -323,13 +325,15 @@ impl ProtectionDomain {
323325
324326 match child. tag_name ( ) . name ( ) {
325327 "program_image" => {
326- check_attributes ( xml_sdf, & child, & [ "path" ] ) ?;
328+ check_attributes ( xml_sdf, & child, & [ "path" , "path_for_symbols" ] ) ?;
327329 if program_image. is_some ( ) {
328330 return Err ( value_error ( xml_sdf, node, "program_image must only be specified once" . to_string ( ) ) ) ;
329331 }
330332
331333 let program_image_path = checked_lookup ( xml_sdf, & child, "path" ) ?;
332334 program_image = Some ( Path :: new ( program_image_path) . to_path_buf ( ) ) ;
335+
336+ program_image_for_symbols = child. attribute ( "path_for_symbols" ) . map ( PathBuf :: from) ;
333337 } ,
334338 "map" => {
335339 let map = SysMap :: from_xml ( xml_sdf, & child, true ) ?;
@@ -415,6 +419,7 @@ impl ProtectionDomain {
415419 pp,
416420 passive,
417421 program_image : program_image. unwrap ( ) ,
422+ program_image_for_symbols,
418423 maps,
419424 irqs,
420425 setvars,
0 commit comments