mirror of
https://git.proxmox.com/git/grub2
synced 2025-07-27 09:39:58 +00:00
util/mkimage: Improve data_size value calculation
According to "Microsoft Portable Executable and Common Object File Format Specification", the Optional Header SizeOfInitializedData field contains: Size of the initialized data section, or the sum of all such sections if there are multiple data sections. Make this explicit by adding the GRUB kernel data size to the sum of all the modules sizes. The ALIGN_UP() is not required by the PE spec but do it to avoid alignment issues. Signed-off-by: Peter Jones <pjones@redhat.com> Signed-off-by: Javier Martinez Canillas <javierm@redhat.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
ba44c87e56
commit
ff406eff25
@ -1260,6 +1260,7 @@ grub_install_generate_image (const char *dir, const char *prefix,
|
|||||||
void *pe_img;
|
void *pe_img;
|
||||||
grub_uint8_t *header;
|
grub_uint8_t *header;
|
||||||
void *sections;
|
void *sections;
|
||||||
|
size_t scn_size;
|
||||||
size_t pe_size;
|
size_t pe_size;
|
||||||
struct grub_pe32_coff_header *c;
|
struct grub_pe32_coff_header *c;
|
||||||
struct grub_pe32_section_table *text_section, *data_section;
|
struct grub_pe32_section_table *text_section, *data_section;
|
||||||
@ -1362,7 +1363,10 @@ grub_install_generate_image (const char *dir, const char *prefix,
|
|||||||
| GRUB_PE32_SCN_MEM_EXECUTE
|
| GRUB_PE32_SCN_MEM_EXECUTE
|
||||||
| GRUB_PE32_SCN_MEM_READ);
|
| GRUB_PE32_SCN_MEM_READ);
|
||||||
|
|
||||||
PE_OHDR (o32, o64, data_size) = grub_host_to_target32 (reloc_addr - layout.exec_size - header_size);
|
scn_size = ALIGN_UP (layout.kernel_size - layout.exec_size, GRUB_PE32_FILE_ALIGNMENT);
|
||||||
|
PE_OHDR (o32, o64, data_size) = grub_host_to_target32 (scn_size +
|
||||||
|
ALIGN_UP (total_module_size,
|
||||||
|
GRUB_PE32_FILE_ALIGNMENT));
|
||||||
|
|
||||||
data_section = text_section + 1;
|
data_section = text_section + 1;
|
||||||
strcpy (data_section->name, ".data");
|
strcpy (data_section->name, ".data");
|
||||||
|
Loading…
Reference in New Issue
Block a user