@@ -246,6 +246,7 @@ pub struct ProtectionDomain {
246246 pub stack_size : u64 ,
247247 pub smc : bool ,
248248 pub program_image : PathBuf ,
249+ pub program_image_for_symbols : Option < PathBuf > ,
249250 pub maps : Vec < SysMap > ,
250251 pub irqs : Vec < SysIrq > ,
251252 pub ioports : Vec < IOPort > ,
@@ -560,6 +561,7 @@ impl ProtectionDomain {
560561 let mut child_pds = Vec :: new ( ) ;
561562
562563 let mut program_image = None ;
564+ let mut program_image_for_symbols = None ;
563565 let mut virtual_machine = None ;
564566
565567 // Default to minimum priority
@@ -584,7 +586,7 @@ impl ProtectionDomain {
584586
585587 match child. tag_name ( ) . name ( ) {
586588 "program_image" => {
587- check_attributes ( xml_sdf, & child, & [ "path" ] ) ?;
589+ check_attributes ( xml_sdf, & child, & [ "path" , "path_for_symbols" ] ) ?;
588590 if program_image. is_some ( ) {
589591 return Err ( value_error (
590592 xml_sdf,
@@ -595,6 +597,9 @@ impl ProtectionDomain {
595597
596598 let program_image_path = checked_lookup ( xml_sdf, & child, "path" ) ?;
597599 program_image = Some ( Path :: new ( program_image_path) . to_path_buf ( ) ) ;
600+
601+ program_image_for_symbols =
602+ child. attribute ( "path_for_symbols" ) . map ( PathBuf :: from) ;
598603 }
599604 "map" => {
600605 let map_max_vaddr = config. pd_map_max_vaddr ( stack_size) ;
@@ -1043,6 +1048,7 @@ impl ProtectionDomain {
10431048 stack_size,
10441049 smc,
10451050 program_image : program_image. unwrap ( ) ,
1051+ program_image_for_symbols,
10461052 maps,
10471053 irqs,
10481054 ioports,
0 commit comments