1use multiboot2_common::MaybeDynSized;
2use multiboot2_header::Builder;
3use multiboot2_header::{
4    HeaderTagFlag, HeaderTagISA, InformationRequestHeaderTag, MbiTagType, Multiboot2Header,
5    RelocatableHeaderTag, RelocatableHeaderTagPreference,
6};
7
8fn main() {
10    let mb2_hdr_bytes = Builder::new(HeaderTagISA::I386)
14        .relocatable_tag(RelocatableHeaderTag::new(
15            HeaderTagFlag::Required,
16            0x1337,
17            0xdeadbeef,
18            4096,
19            RelocatableHeaderTagPreference::None,
20        ))
21        .information_request_tag(InformationRequestHeaderTag::new(
22            HeaderTagFlag::Required,
23            &[
24                MbiTagType::Cmdline.into(),
25                MbiTagType::BootLoaderName.into(),
26            ],
27        ))
28        .build();
29
30    let ptr = mb2_hdr_bytes.as_bytes().as_ptr();
32    let mb2_hdr = unsafe { Multiboot2Header::load(ptr.cast()) };
33    let mb2_hdr = mb2_hdr.unwrap();
34    println!("{mb2_hdr:#?}");
35}