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
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-grub