:: commit 1c552de5bb39b7e7c632c1250290826ae29843fb

mintsuki <mintsuki@protonmail.com> — 2024-06-08 14:11

parents: ec72702e30

misc/efi: Replace .padding with manual alignment

diff --git a/common/GNUmakefile b/common/GNUmakefile
index 54e30e7a..57f246b5 100644
--- a/common/GNUmakefile
+++ b/common/GNUmakefile
@@ -352,6 +352,7 @@ $(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nom
 $(call MKESCAPE,$(BUILDDIR))/BOOTX64.EFI: $(call MKESCAPE,$(BUILDDIR))/limine.elf
 	$(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
 	chmod -x '$(call SHESCAPE,$@)'
+	dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( ($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 ))
 
 $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-x86_64.S.o: limine-efi
 
@@ -398,6 +399,7 @@ $(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nom
 $(call MKESCAPE,$(BUILDDIR))/BOOTAA64.EFI: $(call MKESCAPE,$(BUILDDIR))/limine.elf
 	$(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
 	chmod -x '$(call SHESCAPE,$@)'
+	dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( ($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 ))
 
 $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-aarch64.S.o: limine-efi
 
@@ -443,6 +445,7 @@ $(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nom
 $(call MKESCAPE,$(BUILDDIR))/BOOTRISCV64.EFI: $(call MKESCAPE,$(BUILDDIR))/limine.elf
 	$(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
 	chmod -x '$(call SHESCAPE,$@)'
+	dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( ($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 ))
 
 $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-riscv64.S.o: limine-efi
 
@@ -488,6 +491,7 @@ $(call MKESCAPE,$(BUILDDIR))/full.map.o: $(call MKESCAPE,$(BUILDDIR))/limine_nom
 $(call MKESCAPE,$(BUILDDIR))/BOOTIA32.EFI: $(call MKESCAPE,$(BUILDDIR))/limine.elf
 	$(OBJCOPY_FOR_TARGET) -O binary '$(call SHESCAPE,$<)' '$(call SHESCAPE,$@)'
 	chmod -x '$(call SHESCAPE,$@)'
+	dd if=/dev/zero of='$(call SHESCAPE,$@)' bs=4096 count=0 seek=$$(( ($$(wc -c < '$(call SHESCAPE,$@)') + 4095) / 4096 ))
 
 $(call MKESCAPE,$(BUILDDIR))/limine-efi/gnuefi/crt0-efi-ia32.S.o: limine-efi
 
diff --git a/common/linker_uefi_aarch64.ld.in b/common/linker_uefi_aarch64.ld.in
index 793c2313..bfc33d2b 100644
--- a/common/linker_uefi_aarch64.ld.in
+++ b/common/linker_uefi_aarch64.ld.in
@@ -62,15 +62,10 @@ SECTIONS
         *(.dynamic)
     } :data :dynamic
 
-    .padding : {
-        KEEP(*(.padding))
-        . = ALIGN(0x1000);
-    } :data
-
-    __data_end = ABSOLUTE(.);
+    __data_end = ABSOLUTE(ALIGN(0x1000));
     __data_size = ABSOLUTE(__data_end - __data_start);
 
-    __image_end = ABSOLUTE(.);
+    __image_end = ABSOLUTE(ALIGN(0x1000));
 
     /DISCARD/ : {
         *(.eh_frame*)
diff --git a/common/linker_uefi_ia32.ld.in b/common/linker_uefi_ia32.ld.in
index bd6a46a8..534f91ca 100644
--- a/common/linker_uefi_ia32.ld.in
+++ b/common/linker_uefi_ia32.ld.in
@@ -62,15 +62,10 @@ SECTIONS
         *(.dynamic)
     } :data :dynamic
 
-    .padding : {
-        KEEP(*(.padding))
-        . = ALIGN(0x1000);
-    } :data
-
-    __data_end = ABSOLUTE(.);
+    __data_end = ABSOLUTE(ALIGN(0x1000));
     __data_size = ABSOLUTE(__data_end - __data_start);
 
-    __image_end = ABSOLUTE(.);
+    __image_end = ABSOLUTE(ALIGN(0x1000));
 
     /DISCARD/ : {
         *(.eh_frame*)
diff --git a/common/linker_uefi_riscv64.ld.in b/common/linker_uefi_riscv64.ld.in
index ad71bba7..072c7820 100644
--- a/common/linker_uefi_riscv64.ld.in
+++ b/common/linker_uefi_riscv64.ld.in
@@ -64,15 +64,10 @@ SECTIONS
         *(.dynamic)
     } :data :dynamic
 
-    .padding : {
-        KEEP(*(.padding))
-        . = ALIGN(0x1000);
-    } :data
-
-    __data_end = ABSOLUTE(.);
+    __data_end = ABSOLUTE(ALIGN(0x1000));
     __data_size = ABSOLUTE(__data_end - __data_start);
 
-    __image_end = ABSOLUTE(.);
+    __image_end = ABSOLUTE(ALIGN(0x1000));
 
     /DISCARD/ : {
         *(.eh_frame*)
diff --git a/common/linker_uefi_x86_64.ld.in b/common/linker_uefi_x86_64.ld.in
index 66f00997..b5c8344a 100644
--- a/common/linker_uefi_x86_64.ld.in
+++ b/common/linker_uefi_x86_64.ld.in
@@ -62,15 +62,10 @@ SECTIONS
         *(.dynamic)
     } :data :dynamic
 
-    .padding : {
-        KEEP(*(.padding))
-        . = ALIGN(0x1000);
-    } :data
-
-    __data_end = ABSOLUTE(.);
+    __data_end = ABSOLUTE(ALIGN(0x1000));
     __data_size = ABSOLUTE(__data_end - __data_start);
 
-    __image_end = ABSOLUTE(.);
+    __image_end = ABSOLUTE(ALIGN(0x1000));
 
     /DISCARD/ : {
         *(.eh_frame*)
tab: 248 wrap: offon