From: Jan Kiszka <[email protected]>

Rather than hard-coding some alignment, use that of the stub loader in
order to be consistent in the generated image.

Signed-off-by: Jan Kiszka <[email protected]>
---
 tools/bg_gen_unified_kernel | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/tools/bg_gen_unified_kernel b/tools/bg_gen_unified_kernel
index d3d77fa..45d9cbc 100755
--- a/tools/bg_gen_unified_kernel
+++ b/tools/bg_gen_unified_kernel
@@ -50,6 +50,7 @@ class Section:
 class PEHeaders:
     OPT_OFFS_SIZE_OF_INIT_DATA = 0x8
     OPT_OFFS_SECTION_ALIGNMENT = 0x20
+    OPT_OFFS_FILE_ALIGNMENT = 0x24
     OPT_OFFS_SIZE_OF_IMAGE = 0x38
 
     def __init__(self, name, blob):
@@ -138,6 +139,9 @@ class PEHeaders:
                                   alignment)
         self.set_size_of_image(align(self.get_size_of_image(), alignment))
 
+    def get_file_alignment(self):
+        return self.get_opt_header_field(PEHeaders.OPT_OFFS_FILE_ALIGNMENT)
+
     def get_size_of_image(self):
         return self.get_opt_header_field(PEHeaders.OPT_OFFS_SIZE_OF_IMAGE)
 
@@ -200,10 +204,11 @@ def main():
     stub = args.stub.read()
 
     pe_headers = PEHeaders('stub image', stub)
+    file_align = pe_headers.get_file_alignment()
 
     # Add extra section headers
-    cmdline_offs = align(len(stub), 512)
-    cmdline_size = align(len(cmdline), 512)
+    cmdline_offs = align(len(stub), file_align)
+    cmdline_size = align(len(cmdline), file_align)
     section = Section(b'.cmdline', cmdline_size, 0x30000,
                       cmdline_size, cmdline_offs,
                       Section.IMAGE_SCN_CNT_INITIALIZED_DATA |
@@ -214,7 +219,7 @@ def main():
     kernel_pe_headers = PEHeaders('kernel', kernel)
 
     kernel_offs = cmdline_offs + cmdline_size
-    kernel_size = align(len(kernel), 512)
+    kernel_size = align(len(kernel), file_align)
     kernel_virt_size = max(kernel_size, kernel_pe_headers.get_size_of_image())
     section = Section(b'.kernel', kernel_virt_size, 0x2000000,
                       kernel_size, kernel_offs,
@@ -227,7 +232,7 @@ def main():
     initrd_size = 0
     if args.initrd:
         initrd = args.initrd.read()
-        initrd_size = align(len(initrd), 512)
+        initrd_size = align(len(initrd), file_align)
         section = Section(b'.initrd', initrd_size, 0x6000000,
                           initrd_size, initrd_offs,
                           Section.IMAGE_SCN_CNT_INITIALIZED_DATA |
@@ -242,7 +247,7 @@ def main():
     for n in range(len(args.dtb)):
         dtb.append(args.dtb[n].read())
         dtb_offs.append(current_offs)
-        dtb_size = align(len(dtb[n]), 512)
+        dtb_size = align(len(dtb[n]), file_align)
         section = Section(bytes('.dtb-{}'.format(n + 1), 'ascii'),
                           dtb_size, dtb_virt, dtb_size, dtb_offs[n],
                           Section.IMAGE_SCN_CNT_INITIALIZED_DATA |
@@ -276,7 +281,7 @@ def main():
         image += dtb[n]
 
     # Align to promised size of last section
-    image += bytearray(align(len(image), 512) - len(image))
+    image += bytearray(align(len(image), file_align) - len(image))
 
     args.output.write(image)
 
-- 
2.35.3

-- 
You received this message because you are subscribed to the Google Groups "EFI 
Boot Guard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/efibootguard-dev/e4d5c4799a267a9314870d8007aa8785dcd010e7.1655731805.git.jan.kiszka%40siemens.com.

Reply via email to