@@ -225,6 +225,7 @@ pub struct ProtectionDomain {
225225 pub stack_size : u64 ,
226226 pub smc : bool ,
227227 pub program_image : PathBuf ,
228+ pub program_image_for_symbols : Option < PathBuf > ,
228229 pub maps : Vec < SysMap > ,
229230 pub irqs : Vec < SysIrq > ,
230231 pub ioports : Vec < IOPort > ,
@@ -536,6 +537,7 @@ impl ProtectionDomain {
536537 let mut child_pds = Vec :: new ( ) ;
537538
538539 let mut program_image = None ;
540+ let mut program_image_for_symbols = None ;
539541 let mut virtual_machine = None ;
540542
541543 // Default to minimum priority
@@ -560,7 +562,7 @@ impl ProtectionDomain {
560562
561563 match child. tag_name ( ) . name ( ) {
562564 "program_image" => {
563- check_attributes ( xml_sdf, & child, & [ "path" ] ) ?;
565+ check_attributes ( xml_sdf, & child, & [ "path" , "path_for_symbols" ] ) ?;
564566 if program_image. is_some ( ) {
565567 return Err ( value_error (
566568 xml_sdf,
@@ -571,6 +573,9 @@ impl ProtectionDomain {
571573
572574 let program_image_path = checked_lookup ( xml_sdf, & child, "path" ) ?;
573575 program_image = Some ( Path :: new ( program_image_path) . to_path_buf ( ) ) ;
576+
577+ program_image_for_symbols =
578+ child. attribute ( "path_for_symbols" ) . map ( PathBuf :: from) ;
574579 }
575580 "map" => {
576581 let map_max_vaddr = config. pd_map_max_vaddr ( stack_size) ;
@@ -973,6 +978,7 @@ impl ProtectionDomain {
973978 stack_size,
974979 smc,
975980 program_image : program_image. unwrap ( ) ,
981+ program_image_for_symbols,
976982 maps,
977983 irqs,
978984 ioports,
0 commit comments