diff options
author | Tristan Muntsinger <muntsinger@google.com> | 2018-12-21 16:01:56 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-01-28 14:17:10 -0800 |
commit | 4133b0120d1e16cafbb373b2ae17a214b594038b (patch) | |
tree | 177506988846e4b86e639cdb963bbaba0c4e6ca9 /kernel_loader | |
parent | f052cfefc8d6d27fa068c34190615db1819b8fef (diff) | |
download | crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.gz crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.bz2 crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.lz crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.xz crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.zst crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.zip |
crosvm: x86_64 guest support for android device-tree
This device tree is derived from the Android fstab file which is provided via command line flag. BUG=chromium:922737 TEST=None CQ-DEPEND=CL:1415390 CQ-DEPEND=CL:1415270 Change-Id: Idd007c844f84cab3ff37be16a718f14e5f630312 Reviewed-on: https://chromium-review.googlesource.com/1370058 Commit-Ready: Daniel Verkamp <dverkamp@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'kernel_loader')
-rw-r--r-- | kernel_loader/src/lib.rs | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/kernel_loader/src/lib.rs b/kernel_loader/src/lib.rs index b0fdf66..ecc5a34 100644 --- a/kernel_loader/src/lib.rs +++ b/kernel_loader/src/lib.rs @@ -76,7 +76,7 @@ pub fn load_kernel<F>( guest_mem: &GuestMemory, kernel_start: GuestAddress, kernel_image: &mut F, -) -> Result<()> +) -> Result<u64> where F: Read + Seek, { @@ -117,6 +117,8 @@ where .map_err(|_| Error::ReadProgramHeader)? }; + let mut kernel_end = 0; + // Read in each section pointed to by the program headers. for phdr in &phdrs { if phdr.p_type != elf::PT_LOAD || phdr.p_filesz == 0 { @@ -133,9 +135,11 @@ where guest_mem .read_to_memory(mem_offset, kernel_image, phdr.p_filesz as usize) .map_err(|_| Error::ReadKernelImage)?; + + kernel_end = mem_offset.offset() + phdr.p_memsz; } - Ok(()) + Ok(kernel_end) } /// Writes the command line string to the given memory slice. @@ -236,7 +240,7 @@ mod test { let kernel_addr = GuestAddress(0x0); let image = make_elf_bin(); assert_eq!( - Ok(()), + Ok(16613), load_kernel(&gm, kernel_addr, &mut Cursor::new(&image)) ); } |