Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch Fill the .text padding with 0xcc (int3), in such a ...



details:   https://anonhg.NetBSD.org/src/rev/266f946c33d9
branches:  trunk
changeset: 826167:266f946c33d9
user:      maxv <maxv%NetBSD.org@localhost>
date:      Fri Aug 18 10:28:53 2017 +0000

description:
Fill the .text padding with 0xcc (int3), in such a way that any jump into
this area will automatically fault. The alignment within the section is
necessary, in order to fill strictly all of the padding (took me a while
to figure this out); but it does not change the kernel size.

Greatly inspired from FreeBSD, but for some reason they decided not to
apply the alignment.

diffstat:

 sys/arch/amd64/conf/kern.ldscript    |  15 ++++-----------
 sys/arch/i386/conf/kern.ldscript     |  15 ++++-----------
 sys/arch/i386/conf/kern.ldscript.4MB |  15 ++++-----------
 3 files changed, 12 insertions(+), 33 deletions(-)

diffs (111 lines):

diff -r 06b31c7746cb -r 266f946c33d9 sys/arch/amd64/conf/kern.ldscript
--- a/sys/arch/amd64/conf/kern.ldscript Fri Aug 18 10:02:37 2017 +0000
+++ b/sys/arch/amd64/conf/kern.ldscript Fri Aug 18 10:28:53 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: kern.ldscript,v 1.23 2017/06/14 07:45:45 maxv Exp $    */
+/*     $NetBSD: kern.ldscript,v 1.24 2017/08/18 10:28:53 maxv Exp $    */
 
 #include "assym.h"
 
@@ -13,12 +13,13 @@
 ENTRY(_start)
 SECTIONS
 {
-       .text :
+       .text : AT (ADDR(.text) & 0x0fffffff)
        {
                *(.text)
                *(.text.*)
                *(.stub)
-       }
+               . = ALIGN(__LARGE_PAGE_SIZE);
+       } =0xCC
        _etext = . ;
        PROVIDE (etext = .) ;
 
@@ -79,11 +80,3 @@
        }
 }
 
-SECTIONS
-{
-       .text :
-       AT (ADDR(.text) & 0x0fffffff)
-       {
-               *(.text)
-       } = 0
-}
diff -r 06b31c7746cb -r 266f946c33d9 sys/arch/i386/conf/kern.ldscript
--- a/sys/arch/i386/conf/kern.ldscript  Fri Aug 18 10:02:37 2017 +0000
+++ b/sys/arch/i386/conf/kern.ldscript  Fri Aug 18 10:28:53 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: kern.ldscript,v 1.19 2016/05/14 08:19:42 maxv Exp $    */
+/*     $NetBSD: kern.ldscript,v 1.20 2017/08/18 10:28:53 maxv Exp $    */
 
 #include "assym.h"
 
@@ -7,12 +7,13 @@
 ENTRY(_start)
 SECTIONS
 {
-       .text :
+       .text : AT (ADDR(.text) & 0x0fffffff)
        {
                *(.text)
                *(.text.*)
                *(.stub)
-       }
+               . = ALIGN(__PAGE_SIZE);
+       } =0xCC
        _etext = . ;
        PROVIDE (etext = .) ;
 
@@ -69,11 +70,3 @@
        }
 }
 
-SECTIONS
-{
-       .text :
-       AT (ADDR(.text) & 0x0fffffff)
-       {
-               *(.text)
-       } = 0
-}
diff -r 06b31c7746cb -r 266f946c33d9 sys/arch/i386/conf/kern.ldscript.4MB
--- a/sys/arch/i386/conf/kern.ldscript.4MB      Fri Aug 18 10:02:37 2017 +0000
+++ b/sys/arch/i386/conf/kern.ldscript.4MB      Fri Aug 18 10:28:53 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: kern.ldscript.4MB,v 1.17 2016/05/16 07:52:31 maxv Exp $        */
+/*     $NetBSD: kern.ldscript.4MB,v 1.18 2017/08/18 10:28:53 maxv Exp $        */
 
 #include "assym.h"
 
@@ -12,12 +12,13 @@
 ENTRY(_start)
 SECTIONS
 {
-       .text :
+       .text : AT (ADDR(.text) & 0x0fffffff)
        {
                *(.text)
                *(.text.*)
                *(.stub)
-       }
+               . = ALIGN(__LARGE_PAGE_SIZE);
+       } =0xCC
        _etext = . ;
        PROVIDE (etext = .) ;
 
@@ -78,11 +79,3 @@
        }
 }
 
-SECTIONS
-{
-       .text :
-       AT (ADDR(.text) & 0x0fffffff)
-       {
-               *(.text)
-       } = 0
-}



Home | Main Index | Thread Index | Old Index