Skip to content

Commit 682b892

Browse files
committed
tests: add simple test case for ARM64 Image loader
The test_image.bin is a cut of the first 4096 bytes of a pre-compiled linux kernel ARM64 Image. Signed-off-by: Qiu Wenbo <qiuwenbo@phytium.com.cn>
1 parent 4f58b17 commit 682b892

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

src/loader/mod.rs

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -513,8 +513,7 @@ impl KernelLoader for Image {
513513
#[cfg(test)]
514514
mod 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();

src/loader/test_image.bin

3.91 KB
Binary file not shown.

0 commit comments

Comments
 (0)