Hello, I'm seeing an inconsistency in the multiboot2 specification and the implementation of the multiboot2 loader code in GRUB. It may be my understanding that's incorrect. A clarification would be appreciated.
This concerns the alignment requirements for tags in OS image headers. The specification states 4 bytes, but the code uses 8 bytes. The specification states (Section 3.1.3) that "Tags constitutes a buffer of structures following each other padded on 'u32' size." The "for" loop for parsing tags uses the following "increment" statement (grub/grub_core/loader/multiboot_mbi2.c: line 148): tag = (struct multiboot_header_tag *) ((grub_uint32_t *) tag + ALIGN_UP (tag->size, MULTIBOOT_TAG_ALIGN) / 4)) The macro MULTIBOOT_TAG_ALIGN is defined in (include/multiboot2.h) as 8. This alignment value is consistent with the specification for tags in the multiboot2 information structure, but not for tags in an OS image header. thank you, Safayet N Ahmed Ph.D Researcher, Computer Engineer GE Global Research Center One Research Circle, Niskayuna, NY 12309 United States General Electric Company, GE Global Research GE imagination at work _______________________________________________ Bug-grub mailing list Bug-grub@gnu.org https://lists.gnu.org/mailman/listinfo/bug-grub