@@ -513,8 +513,7 @@ impl KernelLoader for Image {
513
513
#[ cfg( test) ]
514
514
mod test {
515
515
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" ) ) ]
518
517
use std:: io:: Cursor ;
519
518
use vm_memory:: { Address , GuestAddress , GuestMemoryMmap } ;
520
519
@@ -541,6 +540,15 @@ mod test {
541
540
v
542
541
}
543
542
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
+
544
552
#[ allow( safe_packed_borrows) ]
545
553
#[ allow( non_snake_case) ]
546
554
#[ test]
@@ -663,6 +671,19 @@ mod test {
663
671
) ;
664
672
}
665
673
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
+
666
687
#[ test]
667
688
fn cmdline_overflow ( ) {
668
689
let gm = create_guest_mem ( ) ;
0 commit comments