Skip to content

Commit 20f25f2

Browse files
Caduser2020Caduser2020
Caduser2020
authored and
Caduser2020
committed
Add struct size tests.
1 parent 2955277 commit 20f25f2

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

src/elf_sections.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub unsafe fn elf_sections_tag(tag: &Tag, offset: usize) -> ElfSectionsTag {
1313
assert_eq!(9, tag.typ);
1414
let es = ElfSectionsTag {
1515
inner: (tag as *const Tag).offset(1) as *const ElfSectionsTagInner,
16-
offset: offset,
16+
offset,
1717
};
1818
assert!((es.get().entry_size * es.get().shndx) <= tag.size);
1919
es

src/lib.rs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,15 @@ mod tests {
466466
assert!(bi.command_line_tag().is_none());
467467
}
468468

469+
#[test]
470+
/// Compile time test for `BootLoaderNameTag`.
471+
fn name_tag_size() {
472+
use BootLoaderNameTag;
473+
unsafe {
474+
core::mem::transmute::<[u8; 9], BootLoaderNameTag>([0u8; 9]);
475+
}
476+
}
477+
469478
#[test]
470479
fn framebuffer_tag_rgb() {
471480
// direct RGB mode test:
@@ -587,6 +596,16 @@ mod tests {
587596
}
588597
}
589598

599+
#[test]
600+
/// Compile time test for `FramebufferTag`.
601+
fn framebuffer_tag_size() {
602+
use crate::FramebufferTag;
603+
unsafe {
604+
// 24 for the start + 24 for `FramebufferType`.
605+
core::mem::transmute::<[u8; 48], FramebufferTag>([0u8; 48]);
606+
}
607+
}
608+
590609
#[test]
591610
fn vbe_info_tag() {
592611
//Taken from GRUB2 running in QEMU.
@@ -745,6 +764,16 @@ mod tests {
745764
}
746765
}
747766

767+
#[test]
768+
/// Compile time test for `VBEInfoTag`.
769+
fn vbe_info_tag_size() {
770+
use VBEInfoTag;
771+
unsafe {
772+
// 16 for the start + 512 from `VBEControlInfo` + 256 from `VBEModeInfo`.
773+
core::mem::transmute::<[u8; 784], VBEInfoTag>([0u8; 784]);
774+
}
775+
}
776+
748777
#[test]
749778
fn grub2() {
750779
#[repr(C, align(8))]
@@ -1225,6 +1254,16 @@ mod tests {
12251254
assert!(s.next().is_none());
12261255
}
12271256

1257+
#[test]
1258+
/// Compile time test for `ElfSectionsTag`.
1259+
fn elf_sections_tag_size() {
1260+
use super::ElfSectionsTag;
1261+
unsafe {
1262+
// `ElfSectionsTagInner` is 12 bytes + 4 in the offset.
1263+
core::mem::transmute::<[u8; 16], ElfSectionsTag>([0u8; 16]);
1264+
}
1265+
}
1266+
12281267
#[test]
12291268
fn efi_memory_map() {
12301269
use memory_map::EFIMemoryAreaType;
@@ -1291,4 +1330,15 @@ mod tests {
12911330
let efi_mmap = boot_info.efi_memory_map_tag();
12921331
assert!(efi_mmap.is_none());
12931332
}
1333+
1334+
#[test]
1335+
/// Compile time test for `EFIMemoryMapTag`.
1336+
fn efi_memory_map_tag_size() {
1337+
use super::EFIMemoryMapTag;
1338+
unsafe {
1339+
// `EFIMemoryMapTag` is 16 bytes + `EFIMemoryDesc` is 40 bytes.
1340+
core::mem::transmute::<[u8; 56], EFIMemoryMapTag>([0u8; 56]);
1341+
}
1342+
}
1343+
12941344
}

0 commit comments

Comments
 (0)