@@ -513,8 +513,7 @@ impl KernelLoader for Image {
513513#[ cfg( test) ]
514514mod test {
515515 use super :: * ;
516- #[ cfg( any( feature = "elf" , feature = "bzimage" ) ) ]
517- #[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
516+ #[ cfg( any( feature = "elf" , feature = "bzimage" , feature = "image" ) ) ]
518517 use std:: io:: Cursor ;
519518 use vm_memory:: { Address , GuestAddress , GuestMemoryMmap } ;
520519
@@ -541,6 +540,15 @@ mod test {
541540 v
542541 }
543542
543+ // first 4096 bytes of a precompiled ARM64 kernel Image.
544+ #[ cfg( feature = "image" ) ]
545+ #[ cfg( target_arch = "aarch64" ) ]
546+ fn make_image_bin ( ) -> Vec < u8 > {
547+ let mut v = Vec :: new ( ) ;
548+ v. extend_from_slice ( include_bytes ! ( "test_image.bin" ) ) ;
549+ v
550+ }
551+
544552 #[ allow( safe_packed_borrows) ]
545553 #[ allow( non_snake_case) ]
546554 #[ test]
@@ -663,6 +671,19 @@ mod test {
663671 ) ;
664672 }
665673
674+ #[ test]
675+ #[ cfg( feature = "image" ) ]
676+ #[ cfg( target_arch = "aarch64" ) ]
677+ fn load_image ( ) {
678+ let gm = create_guest_mem ( ) ;
679+ let image = make_image_bin ( ) ;
680+ let kernel_addr = GuestAddress ( 0x200000 ) ;
681+
682+ let loader_result =
683+ Image :: load ( & gm, Some ( kernel_addr) , & mut Cursor :: new ( & image) , None ) . unwrap ( ) ;
684+ assert_eq ! ( loader_result. kernel_load. raw_value( ) , 0x280000 ) ;
685+ }
686+
666687 #[ test]
667688 fn cmdline_overflow ( ) {
668689 let gm = create_guest_mem ( ) ;
0 commit comments