Make sure __bss_start is aligned on an 8-byte boundary. This makes sure
authorkettenis <kettenis@openbsd.org>
Sun, 27 Jun 2021 21:39:55 +0000 (21:39 +0000)
committerkettenis <kettenis@openbsd.org>
Sun, 27 Jun 2021 21:39:55 +0000 (21:39 +0000)
zeroing out .bss doesn't overrun and overwrite the ELF symbol table.

ok patrick@

sys/arch/arm64/conf/kern.ldscript
sys/arch/riscv64/conf/kern.ldscript

index 786cee1..f2d3764 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: kern.ldscript,v 1.9 2019/11/09 20:07:00 guenther Exp $         */
+/*     $OpenBSD: kern.ldscript,v 1.10 2021/06/27 21:39:55 kettenis Exp $         */
 /*     $NetBSD: ldscript.evbarm,v 1.2 2003/03/05 23:54:22 thorpej Exp $        */
 
 OUTPUT_ARCH(aarch64)
@@ -63,6 +63,7 @@ SECTIONS
        } :data
        PROVIDE (_edata = .);
 
+       . = ALIGN(8);
        PROVIDE (__bss_start = .);
        .sbss :
        {
@@ -80,7 +81,7 @@ SECTIONS
                /* Align here to ensure that the .bss section occupies space up to
                   _end.  Align after .bss to ensure correct alignment even if the
                   .bss section disappears because there are no input sections.  */
-               . = ALIGN(64 / 8);
+               . = ALIGN(8);
        } :data
        PROVIDE (_end = .);
        PROVIDE (end = .);
index 0c03b6f..64c7897 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: kern.ldscript,v 1.2 2021/05/12 01:20:52 jsg Exp $     */
+/*     $OpenBSD: kern.ldscript,v 1.3 2021/06/27 21:39:55 kettenis Exp $        */
 
 OUTPUT_ARCH(riscv64)
 
@@ -58,6 +58,7 @@ SECTIONS
        } :data
        PROVIDE (_edata = .);
 
+       . = ALIGN(8);
        PROVIDE (__bss_start = .);
        .sbss :
        {
@@ -75,7 +76,7 @@ SECTIONS
                /* Align here to ensure that the .bss section occupies space up to
                   _end.  Align after .bss to ensure correct alignment even if the
                   .bss section disappears because there are no input sections.  */
-               . = ALIGN(64 / 8);
+               . = ALIGN(8);
        } :data
        PROVIDE (_end = .);
        PROVIDE (end = .);