Module Name: src Committed By: maxv Date: Fri Aug 18 10:28:53 UTC 2017
Modified Files: src/sys/arch/amd64/conf: kern.ldscript src/sys/arch/i386/conf: kern.ldscript kern.ldscript.4MB Log Message: 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. To generate a diff of this commit: cvs rdiff -u -r1.23 -r1.24 src/sys/arch/amd64/conf/kern.ldscript cvs rdiff -u -r1.19 -r1.20 src/sys/arch/i386/conf/kern.ldscript cvs rdiff -u -r1.17 -r1.18 src/sys/arch/i386/conf/kern.ldscript.4MB Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/amd64/conf/kern.ldscript diff -u src/sys/arch/amd64/conf/kern.ldscript:1.23 src/sys/arch/amd64/conf/kern.ldscript:1.24 --- src/sys/arch/amd64/conf/kern.ldscript:1.23 Wed Jun 14 07:45:45 2017 +++ src/sys/arch/amd64/conf/kern.ldscript Fri Aug 18 10:28:53 2017 @@ -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 @@ __LARGE_PAGE_SIZE = 0x200000 ; 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 } } -SECTIONS -{ - .text : - AT (ADDR(.text) & 0x0fffffff) - { - *(.text) - } = 0 -} Index: src/sys/arch/i386/conf/kern.ldscript diff -u src/sys/arch/i386/conf/kern.ldscript:1.19 src/sys/arch/i386/conf/kern.ldscript:1.20 --- src/sys/arch/i386/conf/kern.ldscript:1.19 Sat May 14 08:19:42 2016 +++ src/sys/arch/i386/conf/kern.ldscript Fri Aug 18 10:28:53 2017 @@ -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 @@ __PAGE_SIZE = 0x1000 ; ENTRY(_start) SECTIONS { - .text : + .text : AT (ADDR(.text) & 0x0fffffff) { *(.text) *(.text.*) *(.stub) - } + . = ALIGN(__PAGE_SIZE); + } =0xCC _etext = . ; PROVIDE (etext = .) ; @@ -69,11 +70,3 @@ SECTIONS } } -SECTIONS -{ - .text : - AT (ADDR(.text) & 0x0fffffff) - { - *(.text) - } = 0 -} Index: src/sys/arch/i386/conf/kern.ldscript.4MB diff -u src/sys/arch/i386/conf/kern.ldscript.4MB:1.17 src/sys/arch/i386/conf/kern.ldscript.4MB:1.18 --- src/sys/arch/i386/conf/kern.ldscript.4MB:1.17 Mon May 16 07:52:31 2016 +++ src/sys/arch/i386/conf/kern.ldscript.4MB Fri Aug 18 10:28:53 2017 @@ -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 @@ __LARGE_PAGE_SIZE = 0x400000 ; 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 } } -SECTIONS -{ - .text : - AT (ADDR(.text) & 0x0fffffff) - { - *(.text) - } = 0 -}