Split early startup code out of locore.S into locore0.S. Adjust link
authorderaadt <deraadt@openbsd.org>
Tue, 13 Jun 2017 01:44:27 +0000 (01:44 +0000)
committerderaadt <deraadt@openbsd.org>
Tue, 13 Jun 2017 01:44:27 +0000 (01:44 +0000)
commit2b08e4fe0444d9f1f89bbb659d8ab96f79be346e
tree3e1b6cd513c08538aab206bf22bc784df00c0a73
parent15ffcbc20939f35d79888cbcd927e54a25018d97
Split early startup code out of locore.S into locore0.S.  Adjust link
run so that this locore0.o is always at the start of the executable.
But randomize the link order of all other .o files in the kernel, so
that their exec/rodata/data/bss segments land all over the place.

As a result, the internal layout of every newly build bsd kernel is
different from past kernels.  Internal relative offsets are not known
to an outside attacker.  The only known offsets are in the startup code
(which will be gone when it is smashed).

The bootstrap code unmapping or smashing isn't done yet, and there is
some potential for more bits from locore.S to move to locore0.S
sys/arch/macppc/conf/Makefile.macppc
sys/arch/macppc/conf/files.macppc
sys/arch/macppc/macppc/locore.S
sys/arch/macppc/macppc/locore0.S [new file with mode: 0644]