First step of randomized link for sparc64: gap.S and randomize files.
authorderaadt <deraadt@openbsd.org>
Tue, 13 Jun 2017 00:16:09 +0000 (00:16 +0000)
committerderaadt <deraadt@openbsd.org>
Tue, 13 Jun 2017 00:16:09 +0000 (00:16 +0000)
locore isn't split up yet, nor is the startup code smashed.
ok dlg, pieces seen before by kettenis

sys/arch/sparc64/conf/Makefile.sparc64

index 55c1ba5..935fe57 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: Makefile.sparc64,v 1.85 2017/06/11 22:51:21 deraadt Exp $
+#      $OpenBSD: Makefile.sparc64,v 1.86 2017/06/13 00:16:09 deraadt Exp $
 
 # For instructions on building kernels consult the config(8) and options(4)
 # manual pages.
@@ -29,9 +29,13 @@ CWARNFLAGS=  -Werror -Wall -Wimplicit-function-declaration \
 
 CMACHFLAGS=    -Wa,-Av9b, -mno-fpu
 CMACHFLAGS+=   -ffreestanding ${NOPIE_FLAGS}
+SORTR=         sort -R
 .if ${IDENT:M-DNO_PROPOLICE}
 CMACHFLAGS+=   -fno-stack-protector
 .endif
+.if ${IDENT:M-DSMALL_KERNEL}
+SORTR=         cat
+.endif
 
 DEBUG?=                -g
 COPTS?=                -O2
@@ -65,13 +69,14 @@ NORMAL_S=   ${CC} ${AFLAGS} ${CPPFLAGS} -c $<
 #      ${SYSTEM_LD_HEAD}
 #      ${SYSTEM_LD} swapxxx.o
 #      ${SYSTEM_LD_TAIL}
-SYSTEM_HEAD=   locore.o param.o ioconf.o
-SYSTEM_OBJ=    ${SYSTEM_HEAD} ${OBJS}
+SYSTEM_HEAD=   locore.o gap.o
+SYSTEM_OBJ=    ${SYSTEM_HEAD} ${OBJS} param.o ioconf.o
 SYSTEM_DEP=    Makefile ${SYSTEM_OBJ} ld.script
 SYSTEM_LD_HEAD=        @rm -f $@
 SYSTEM_LD=     @echo ${LD} ${LINKFLAGS} -o $@ '$${SYSTEM_HEAD} vers.o $${OBJS}'; \
                umask 007; \
-               ${LD} ${LINKFLAGS} -o $@ ${SYSTEM_HEAD} vers.o ${OBJS}
+               echo ${OBJS} param.o ioconf.o vers.o | tr " " "\n" | ${SORTR} > lorder; \
+               ${LD} ${LINKFLAGS} -o $@ ${SYSTEM_HEAD} `cat lorder`
 SYSTEM_LD_TAIL=        @${SIZE} $@
 
 .if ${DEBUG} == "-g"
@@ -118,8 +123,15 @@ vers.o: ${SYSTEM_DEP:Ngap.o} ${SYSTEM_SWAP_DEP}
        sh $S/conf/newvers.sh
        ${CC} ${CFLAGS} ${CPPFLAGS} ${PROF} -c vers.c
 
+gap.S: ${SYSTEM_SWAP_DEP} Makefile
+       umask 007; sh $S/conf/makegap.sh 0x00 > gap.S
+
+gap.o: gap.S
+       umask 007; ${CC} ${AFLAGS} ${CPPFLAGS} ${PROF} -c gap.S
+
 clean:
-       rm -f *bsd *bsd.gdb *.[dio] [a-z]*.s assym.* ${DB_STRUCTINFO} param.c
+       rm -f *bsd *bsd.gdb *.[dio] [a-z]*.s assym.* ${DB_STRUCTINFO} \
+           gap.S lorder param.c
 
 cleandir: clean
        rm -f Makefile *.h ioconf.c options machine ${_mach} vers.c