I'm pretty sure this is a bug in the linked commit above, in that it does not account for this statement in the multiboot spec:
`load_end_addr'
Contains the physical address of the end of the data segment.
(load_end_addr - load_addr) specifies how much data to load. This
implies that the text and data segments must be consecutive in the
OS image; this is true for existing a.out executable formats. If
this field is zero, the boot loader assumes that the text and data
segments occupy the whole OS image file.
I'm pretty sure this is a bug in the linked commit above, in that it does not account for this statement in the multiboot spec:
`load_end_addr'
Contains the physical address of the end of the data segment.
(load_end_addr - load_addr) specifies how much data to load. This
implies that the text and data segments must be consecutive in the
OS image; this is true for existing a.out executable formats. If
this field is zero, the boot loader assumes that the text and data
segments occupy the whole OS image file.
Specifically, "If this field is zero..."