Date: Thu, 19 Jun 2008 17:31:05 +0200 From: Jeremie Le Hen <jeremie@le-hen.org> To: Robert Watson <rwatson@FreeBSD.org> Cc: freebsd-hackers@freebsd.org Subject: Re: Integration of ProPolice in FreeBSD Message-ID: <20080619153105.GL46885@obiwan.tataz.chchile.org> In-Reply-To: <20080614182623.F66582@fledge.watson.org> References: <20080612184237.GC15774@obiwan.tataz.chchile.org> <20080614182623.F66582@fledge.watson.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--O5XBE6gyVG5Rl6Rj
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
Hi Robert, hi all,
On Sat, Jun 14, 2008 at 06:27:30PM +0100, Robert Watson wrote:
>
> On Thu, 12 Jun 2008, Jeremie Le Hen wrote:
>
> > (This mail has already been sent to -arch@. I'm sending it here now for a
> > wider audience because I really need testers.)
>
> Dear Jeremie,
>
> Unfortunately, I can't lend my hands to this project as they're currently
> full of other stuff. However, I would really be very pleased to see is
> [finally] ship a release with ProPolice enabled. We're definitely trailing
> the pack in this regard, and I think it's bad practice to not ship with what
> are considered industry-standard protections here. Thanks for your work on
> this!
Thank you for those words or cheer.
I inquired some of my friends to get some testing, and in most of case
the answer was « I'm running RELENG_7 ». So I've made a patch against
RELENG_7. There are only minor changes in src/Makefile.inc1 because
-DNO_CTR has been sown all over the file :).
So to make it clear for casual glancers:
!!! !!! !!!
This patch is against RELENG_7. If you can afford a reboot,
please test! I need some feedback before it gets committed to
-CURRENT. The patch is very stable on my laptop.
!!! !!! !!!
Thanks you every one.
Best regards,
--
Jeremie Le Hen
< jeremie at le-hen dot org >< ttz at chchile dot org >
--O5XBE6gyVG5Rl6Rj
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="fbsd7-ssp.diff"
Index: Makefile.inc1
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/Makefile.inc1,v
retrieving revision 1.588.2.4
diff -u -p -r1.588.2.4 Makefile.inc1
--- Makefile.inc1 24 Feb 2008 14:31:41 -0000 1.588.2.4
+++ Makefile.inc1 18 Jun 2008 21:13:21 -0000
@@ -206,6 +206,7 @@ BMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \
${BMAKEENV} ${MAKE} -f Makefile.inc1 \
DESTDIR= \
BOOTSTRAPPING=${OSRELDATE} \
+ -DWITHOUT_SSP \
-DWITHOUT_HTML -DWITHOUT_INFO -DNO_LINT -DWITHOUT_MAN \
-DWITHOUT_NLS -DNO_PIC -DWITHOUT_PROFILE -DNO_SHARED \
-DNO_CPU_CFLAGS -DNO_WARNS
@@ -215,7 +216,8 @@ TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \
${BMAKEENV} ${MAKE} -f Makefile.inc1 \
TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
DESTDIR= \
- BOOTSTRAPPING=${OSRELDATE} -DNO_LINT -DNO_CPU_CFLAGS -DNO_WARNS
+ BOOTSTRAPPING=${OSRELDATE} -DNO_LINT -DNO_CPU_CFLAGS -DNO_WARNS \
+ -DWITHOUT_SSP
# cross-tools stage
XMAKE= TOOLS_PREFIX=${WORLDTMP} ${BMAKE} \
@@ -425,7 +427,7 @@ build32:
.if ${MK_KERBEROS} != "no"
.for _t in obj depend all
cd ${.CURDIR}/kerberos5/tools; \
- MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} DESTDIR= ${_t}
+ MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} -DWITHOUT_SSP DESTDIR= ${_t}
.endfor
.endif
.for _t in obj includes
@@ -447,7 +449,7 @@ build32:
.endfor
.for _dir in lib/ncurses/ncurses lib/ncurses/ncursesw lib/libmagic
cd ${.CURDIR}/${_dir}; \
- MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} DESTDIR= build-tools
+ MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} -DWITHOUT_SSP DESTDIR= build-tools
.endfor
cd ${.CURDIR}; \
${LIB32WMAKE} -f Makefile.inc1 libraries
@@ -706,13 +708,13 @@ buildkernel:
@echo "--------------------------------------------------------------"
cd ${KRNLOBJDIR}/${_kernel}; \
MAKESRCPATH=${KERNSRCDIR}/dev/aic7xxx/aicasm \
- ${MAKE} -DNO_CPU_CFLAGS -f ${KERNSRCDIR}/dev/aic7xxx/aicasm/Makefile
+ ${MAKE} -DWITHOUT_SSP -DNO_CPU_CFLAGS -f ${KERNSRCDIR}/dev/aic7xxx/aicasm/Makefile
# XXX - Gratuitously builds aicasm in the ``makeoptions NO_MODULES'' case.
.if !defined(MODULES_WITH_WORLD) && !defined(NO_MODULES) && exists(${KERNSRCDIR}/modules)
.for target in obj depend all
cd ${KERNSRCDIR}/modules/aic7xxx/aicasm; \
MAKEOBJDIRPREFIX=${KRNLOBJDIR}/${_kernel}/modules \
- ${MAKE} -DNO_CPU_CFLAGS ${target}
+ ${MAKE} -DWITHOUT_SSP -DNO_CPU_CFLAGS ${target}
.endfor
.endif
.if !defined(NO_KERNELDEPEND)
Index: gnu/lib/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/gnu/lib/Makefile,v
retrieving revision 1.42
diff -u -p -r1.42 Makefile
--- gnu/lib/Makefile 19 May 2007 04:25:54 -0000 1.42
+++ gnu/lib/Makefile 18 Jun 2008 21:08:09 -0000
@@ -2,7 +2,7 @@
.include <bsd.own.mk>
-SUBDIR= csu libgcc libgcov libdialog libgomp libregex libreadline
+SUBDIR= csu libgcc libgcov libdialog libgomp libregex libreadline libssp
# libsupc++ uses libstdc++ headers, although 'make includes' should
# have taken care of that already.
@@ -14,8 +14,4 @@ SUBDIR+= libstdc++ libsupc++
SUBDIR+= libobjc
.endif
-.if ${MK_SSP} != "no"
-SUBDIR+= libssp
-.endif
-
.include <bsd.subdir.mk>
Index: gnu/lib/csu/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/gnu/lib/csu/Makefile,v
retrieving revision 1.25
diff -u -p -r1.25 Makefile
--- gnu/lib/csu/Makefile 19 May 2007 04:25:55 -0000 1.25
+++ gnu/lib/csu/Makefile 18 Jun 2008 21:08:09 -0000
@@ -19,6 +19,7 @@ CFLAGS+= -I${GCCLIB}/include -I${GCCDIR}
-I${CCDIR}/cc_tools
CRTS_CFLAGS= -DCRTSTUFFS_O -DSHARED ${PICFLAG}
MKDEP= -DCRT_BEGIN
+WITHOUT_SSP=
.if ${MACHINE_ARCH} == "ia64"
BEGINSRC= crtbegin.asm
Index: gnu/lib/libssp/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/gnu/lib/libssp/Makefile,v
retrieving revision 1.2
diff -u -p -r1.2 Makefile
--- gnu/lib/libssp/Makefile 22 May 2007 10:40:58 -0000 1.2
+++ gnu/lib/libssp/Makefile 18 Jun 2008 21:08:09 -0000
@@ -10,6 +10,7 @@ LIB= ssp
SHLIB_MAJOR= 0
SHLIBDIR?= /lib
NO_PROFILE=
+WITHOUT_SSP=
SRCS= ssp.c gets-chk.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \
memset-chk.c snprintf-chk.c sprintf-chk.c stpcpy-chk.c \
Index: lib/csu/Makefile.inc
===================================================================
RCS file: lib/csu/Makefile.inc
diff -N lib/csu/Makefile.inc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lib/csu/Makefile.inc 18 Jun 2008 21:08:09 -0000
@@ -0,0 +1 @@
+WITHOUT_SSP=
Index: lib/libc/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/lib/libc/Makefile,v
retrieving revision 1.73
diff -u -p -r1.73 Makefile
--- lib/libc/Makefile 1 Oct 2007 18:15:10 -0000 1.73
+++ lib/libc/Makefile 18 Jun 2008 21:08:09 -0000
@@ -122,3 +122,9 @@ libkern.${MACHINE_ARCH}:: ${KMSRCS}
# Disable warnings in contributed sources.
CWARNFLAGS:= ${.IMPSRC:Ngdtoa_*.c:C/^.+$/${CWARNFLAGS}/}
+# XXX For now, we don't allow libc to be compiled with
+# -fstack-protector-all because it breaks rtld. We may want to make a librtld
+# in the future to circumvent this.
+SSP_CFLAGS:= ${SSP_CFLAGS:S/^-fstack-protector-all$/-fstack-protector/}
+# Disable stack protection for SSP symbols.
+SSP_CFLAGS:= ${.IMPSRC:N*/stack_protector.c:C/^.+$/${SSP_CFLAGS}/}
Index: lib/libstand/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/lib/libstand/Makefile,v
retrieving revision 1.57.2.3
diff -u -p -r1.57.2.3 Makefile
--- lib/libstand/Makefile 4 May 2008 11:58:25 -0000 1.57.2.3
+++ lib/libstand/Makefile 18 Jun 2008 21:08:09 -0000
@@ -12,6 +12,7 @@ NO_PIC=
INCS= stand.h
MAN= libstand.3
+WITHOUT_SSP=
CFLAGS+= -ffreestanding -Wformat
CFLAGS+= -I${.CURDIR}
Index: lib/libthr/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/lib/libthr/Makefile,v
retrieving revision 1.28
diff -u -p -r1.28 Makefile
--- lib/libthr/Makefile 9 Oct 2007 23:31:10 -0000 1.28
+++ lib/libthr/Makefile 18 Jun 2008 21:08:09 -0000
@@ -8,6 +8,8 @@
# (for system call stubs) to CFLAGS below. -DSYSLIBC_SCCS affects just the
# system call stubs.
+WITHOUT_SSP=
+
.include <bsd.own.mk>
.if (${DEFAULT_THREAD_LIB} == "libthr" || ${MK_LIBKSE} == "no") && \
Index: libexec/rtld-elf/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/libexec/rtld-elf/Makefile,v
retrieving revision 1.41
diff -u -p -r1.41 Makefile
--- libexec/rtld-elf/Makefile 16 May 2007 23:24:15 -0000 1.41
+++ libexec/rtld-elf/Makefile 18 Jun 2008 21:08:09 -0000
@@ -1,5 +1,7 @@
# $FreeBSD: src/libexec/rtld-elf/Makefile,v 1.41 2007/05/16 23:24:15 marcel Exp $
+WITHOUT_SSP=
+
.include <bsd.own.mk>
PROG?= ld-elf.so.1
Index: rescue/librescue/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/rescue/librescue/Makefile,v
retrieving revision 1.9
diff -u -p -r1.9 Makefile
--- rescue/librescue/Makefile 27 Jul 2006 12:28:05 -0000 1.9
+++ rescue/librescue/Makefile 18 Jun 2008 21:08:10 -0000
@@ -2,6 +2,8 @@
# $FreeBSD: src/rescue/librescue/Makefile,v 1.9 2006/07/27 12:28:05 yar Exp $
#
+WITHOUT_SSP=
+
.include <bsd.own.mk>
# Certain library entries have hard-coded references to
Index: rescue/rescue/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/rescue/rescue/Makefile,v
retrieving revision 1.56
diff -u -p -r1.56 Makefile
--- rescue/rescue/Makefile 14 Jul 2007 21:49:22 -0000 1.56
+++ rescue/rescue/Makefile 18 Jun 2008 21:08:10 -0000
@@ -2,6 +2,7 @@
# @(#)Makefile 8.1 (Berkeley) 6/2/93
NO_MAN=
+WITHOUT_SSP=
.include <bsd.own.mk>
Index: share/mk/bsd.sys.mk
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/share/mk/bsd.sys.mk,v
retrieving revision 1.41
diff -u -p -r1.41 bsd.sys.mk
--- share/mk/bsd.sys.mk 24 May 2007 21:53:42 -0000 1.41
+++ share/mk/bsd.sys.mk 18 Jun 2008 21:08:10 -0000
@@ -77,5 +77,11 @@ CWARNFLAGS += -Werror
CWARNFLAGS += -Wno-unknown-pragmas
.endif
+.if ${MK_SSP} != "no" && ${CC} != "icc" && ${MACHINE_ARCH} != "ia64"
+# Don't use -Wstack-protector as it breaks world with -Werror.
+SSP_CFLAGS ?= -fstack-protector
+CFLAGS += ${SSP_CFLAGS}
+.endif
+
# Allow user-specified additional warning flags
CFLAGS += ${CWARNFLAGS}
Index: sys/boot/Makefile.inc
===================================================================
RCS file: sys/boot/Makefile.inc
diff -N sys/boot/Makefile.inc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ sys/boot/Makefile.inc 18 Jun 2008 21:08:10 -0000
@@ -0,0 +1 @@
+WITHOUT_SSP=
Index: sys/boot/arm/Makefile.inc
===================================================================
RCS file: sys/boot/arm/Makefile.inc
diff -N sys/boot/arm/Makefile.inc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ sys/boot/arm/Makefile.inc 18 Jun 2008 21:08:10 -0000
@@ -0,0 +1 @@
+.include "../Makefile.inc"
Index: sys/boot/arm/at91/Makefile.inc
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/boot/arm/at91/Makefile.inc,v
retrieving revision 1.7
diff -u -p -r1.7 Makefile.inc
--- sys/boot/arm/at91/Makefile.inc 13 Jul 2007 14:27:04 -0000 1.7
+++ sys/boot/arm/at91/Makefile.inc 18 Jun 2008 21:08:10 -0000
@@ -53,3 +53,5 @@ MK_FPGA:=no
.endif
.endif
+
+.include "../Makefile.inc"
Index: sys/boot/efi/Makefile.inc
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/boot/efi/Makefile.inc,v
retrieving revision 1.7
diff -u -p -r1.7 Makefile.inc
--- sys/boot/efi/Makefile.inc 12 Feb 2004 08:10:33 -0000 1.7
+++ sys/boot/efi/Makefile.inc 18 Jun 2008 21:08:10 -0000
@@ -5,3 +5,5 @@ BINDIR?= /boot
# Options used when building app-specific efi components
CFLAGS+= -ffreestanding -fshort-wchar -Wformat
LDFLAGS+= -nostdlib
+
+.include "../Makefile.inc"
Index: sys/boot/i386/Makefile.inc
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/boot/i386/Makefile.inc,v
retrieving revision 1.12
diff -u -p -r1.12 Makefile.inc
--- sys/boot/i386/Makefile.inc 28 Sep 2006 10:02:04 -0000 1.12
+++ sys/boot/i386/Makefile.inc 18 Jun 2008 21:08:10 -0000
@@ -24,3 +24,5 @@ BTXDIR= ${.CURDIR}/../btx
BTXLDR= ${BTXDIR}/btxldr/btxldr
BTXKERN= ${BTXDIR}/btx/btx
BTXCRT= ${BTXDIR}/lib/crt0.o
+
+.include "../Makefile.inc"
Index: sys/boot/i386/loader/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/boot/i386/loader/Makefile,v
retrieving revision 1.85
diff -u -p -r1.85 Makefile
--- sys/boot/i386/loader/Makefile 29 May 2007 14:35:57 -0000 1.85
+++ sys/boot/i386/loader/Makefile 18 Jun 2008 21:08:10 -0000
@@ -1,5 +1,7 @@
# $FreeBSD: src/sys/boot/i386/loader/Makefile,v 1.85 2007/05/29 14:35:57 simokawa Exp $
+WITHOUT_SSP=
+
.include <bsd.own.mk>
PROG= loader.sym
Index: sys/boot/ia64/Makefile.inc
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/boot/ia64/Makefile.inc,v
retrieving revision 1.3
diff -u -p -r1.3 Makefile.inc
--- sys/boot/ia64/Makefile.inc 12 Feb 2004 08:10:33 -0000 1.3
+++ sys/boot/ia64/Makefile.inc 18 Jun 2008 21:08:10 -0000
@@ -5,3 +5,5 @@ BINDIR?= /boot
# Options used when building standalone components
CFLAGS+= -ffreestanding -fshort-wchar -Wformat
LDFLAGS+= -nostdlib
+
+.include "../Makefile.inc"
Index: sys/boot/ia64/common/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/boot/ia64/common/Makefile,v
retrieving revision 1.1
diff -u -p -r1.1 Makefile
--- sys/boot/ia64/common/Makefile 5 Nov 2006 22:03:03 -0000 1.1
+++ sys/boot/ia64/common/Makefile 18 Jun 2008 21:08:10 -0000
@@ -1,5 +1,7 @@
# $FreeBSD: src/sys/boot/ia64/common/Makefile,v 1.1 2006/11/05 22:03:03 marcel Exp $
+WITHOUT_SSP=
+
.include <bsd.own.mk>
LIB= ia64
Index: sys/boot/ia64/efi/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/boot/ia64/efi/Makefile,v
retrieving revision 1.28
diff -u -p -r1.28 Makefile
--- sys/boot/ia64/efi/Makefile 5 Nov 2006 22:03:03 -0000 1.28
+++ sys/boot/ia64/efi/Makefile 18 Jun 2008 21:08:10 -0000
@@ -1,6 +1,7 @@
# $FreeBSD: src/sys/boot/ia64/efi/Makefile,v 1.28 2006/11/05 22:03:03 marcel Exp $
NO_MAN=
+WITHOUT_SSP=
.include <bsd.own.mk>
Index: sys/boot/ia64/ski/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/boot/ia64/ski/Makefile,v
retrieving revision 1.20
diff -u -p -r1.20 Makefile
--- sys/boot/ia64/ski/Makefile 5 Nov 2006 22:03:04 -0000 1.20
+++ sys/boot/ia64/ski/Makefile 18 Jun 2008 21:08:10 -0000
@@ -1,6 +1,7 @@
# $FreeBSD: src/sys/boot/ia64/ski/Makefile,v 1.20 2006/11/05 22:03:04 marcel Exp $
NO_MAN=
+WITHOUT_SSP=
.include <bsd.own.mk>
Index: sys/boot/ofw/Makefile.inc
===================================================================
RCS file: sys/boot/ofw/Makefile.inc
diff -N sys/boot/ofw/Makefile.inc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ sys/boot/ofw/Makefile.inc 18 Jun 2008 21:08:10 -0000
@@ -0,0 +1 @@
+.include "../Makefile.inc"
Index: sys/boot/pc98/Makefile.inc
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/boot/pc98/Makefile.inc,v
retrieving revision 1.6.2.1
diff -u -p -r1.6.2.1 Makefile.inc
--- sys/boot/pc98/Makefile.inc 18 Oct 2007 12:08:53 -0000 1.6.2.1
+++ sys/boot/pc98/Makefile.inc 18 Jun 2008 21:08:10 -0000
@@ -19,3 +19,5 @@ BTXDIR= ${.CURDIR}/../btx
BTXLDR= ${BTXDIR}/btxldr/btxldr
BTXKERN= ${BTXDIR}/btx/btx
BTXCRT= ${BTXDIR}/lib/crt0.o
+
+.include "../Makefile.inc"
Index: sys/boot/pc98/loader/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/boot/pc98/loader/Makefile,v
retrieving revision 1.41
diff -u -p -r1.41 Makefile
--- sys/boot/pc98/loader/Makefile 2 Nov 2006 00:26:45 -0000 1.41
+++ sys/boot/pc98/loader/Makefile 18 Jun 2008 21:08:10 -0000
@@ -1,5 +1,7 @@
# $FreeBSD: src/sys/boot/pc98/loader/Makefile,v 1.41 2006/11/02 00:26:45 marcel Exp $
+WITHOUT_SSP=
+
.include <bsd.own.mk>
PROG= loader.sym
Index: sys/boot/powerpc/Makefile.inc
===================================================================
RCS file: sys/boot/powerpc/Makefile.inc
diff -N sys/boot/powerpc/Makefile.inc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ sys/boot/powerpc/Makefile.inc 18 Jun 2008 21:08:10 -0000
@@ -0,0 +1 @@
+.include "../Makefile.inc"
Index: sys/boot/sparc64/Makefile.inc
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/boot/sparc64/Makefile.inc,v
retrieving revision 1.1
diff -u -p -r1.1 Makefile.inc
--- sys/boot/sparc64/Makefile.inc 9 Feb 2004 14:17:02 -0000 1.1
+++ sys/boot/sparc64/Makefile.inc 18 Jun 2008 21:08:19 -0000
@@ -3,3 +3,5 @@
BINDIR?= /boot
CFLAGS+= -ffreestanding
LDFLAGS+= -nostdlib
+
+.include "../Makefile.inc"
Index: sys/boot/sparc64/loader/Makefile
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/boot/sparc64/loader/Makefile,v
retrieving revision 1.20
diff -u -p -r1.20 Makefile
--- sys/boot/sparc64/loader/Makefile 17 Mar 2006 18:54:36 -0000 1.20
+++ sys/boot/sparc64/loader/Makefile 18 Jun 2008 21:08:19 -0000
@@ -1,5 +1,7 @@
# $FreeBSD: src/sys/boot/sparc64/loader/Makefile,v 1.20 2006/03/17 18:54:36 ru Exp $
+WITHOUT_SSP=
+
.include <bsd.own.mk>
PROG= loader
Index: sys/conf/files
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/conf/files,v
retrieving revision 1.1243.2.22
diff -u -p -r1.1243.2.22 files
--- sys/conf/files 19 May 2008 12:34:43 -0000 1.1243.2.22
+++ sys/conf/files 18 Jun 2008 21:08:19 -0000
@@ -1490,6 +1490,8 @@ kern/posix4_mib.c standard
kern/sched_4bsd.c optional sched_4bsd
kern/sched_ule.c optional sched_ule
kern/serdev_if.m standard
+kern/stack_protector.c standard \
+ compile-with "${NORMAL_C:N-fstack-protector*}"
kern/subr_acl_posix1e.c standard
kern/subr_autoconf.c standard
kern/subr_blist.c standard
Index: sys/conf/kern.mk
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/conf/kern.mk,v
retrieving revision 1.52
diff -u -p -r1.52 kern.mk
--- sys/conf/kern.mk 24 May 2007 21:53:42 -0000 1.52
+++ sys/conf/kern.mk 18 Jun 2008 21:08:19 -0000
@@ -97,3 +97,10 @@ CFLAGS+= -ffreestanding
.if ${CC} == "icc"
CFLAGS+= -restrict
.endif
+
+#
+# GCC SSP support.
+#
+.if ${MK_SSP} != "no" && ${CC} != "icc" && ${MACHINE_ARCH} != "ia64"
+CFLAGS+= -fstack-protector
+.endif
Index: sys/conf/kern.pre.mk
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/sys/conf/kern.pre.mk,v
retrieving revision 1.92
diff -u -p -r1.92 kern.pre.mk
--- sys/conf/kern.pre.mk 8 Aug 2007 19:12:06 -0000 1.92
+++ sys/conf/kern.pre.mk 18 Jun 2008 21:08:19 -0000
@@ -3,10 +3,7 @@
# Part of a unified Makefile for building kernels. This part contains all
# of the definitions that need to be before %BEFORE_DEPEND.
-SRCCONF?= /etc/src.conf
-.if exists(${SRCCONF})
-.include "${SRCCONF}"
-.endif
+.include <bsd.own.mk>
# Can be overridden by makeoptions or /etc/make.conf
KERNEL_KO?= kernel
Index: sys/kern/stack_protector.c
===================================================================
RCS file: sys/kern/stack_protector.c
diff -N sys/kern/stack_protector.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ sys/kern/stack_protector.c 18 Jun 2008 21:08:19 -0000
@@ -0,0 +1,32 @@
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/systm.h>
+#include <sys/libkern.h>
+
+#if defined(__SSP__) || defined(__SSP_ALL__)
+long __stack_chk_guard[8] = {};
+void __stack_chk_fail(void);
+
+void
+__stack_chk_fail(void)
+{
+
+ panic("stack overflow detected; backtrace may be corrupted");
+}
+
+#define __arraycount(__x) (sizeof(__x) / sizeof(__x[0]))
+static void
+__stack_chk_init(void *dummy __unused)
+{
+ size_t i;
+ long guard[__arraycount(__stack_chk_guard)];
+
+ arc4rand(guard, sizeof(guard), 0);
+ for (i = 0; i < __arraycount(guard); i++)
+ __stack_chk_guard[i] = guard[i];
+}
+/* SI_SUB_EVENTHANDLER is right after SI_SUB_LOCK used by arc4rand() init. */
+SYSINIT(stack_chk, SI_SUB_EVENTHANDLER, SI_ORDER_ANY, __stack_chk_init, NULL);
+
+#endif
Index: tools/build/options/WITHOUT_SSP
===================================================================
RCS file: /mnt/octobre/space/freebsd-cvs/src/tools/build/options/WITHOUT_SSP,v
retrieving revision 1.1
diff -u -p -r1.1 WITHOUT_SSP
--- tools/build/options/WITHOUT_SSP 19 May 2007 04:42:58 -0000 1.1
+++ tools/build/options/WITHOUT_SSP 18 Jun 2008 21:08:19 -0000
@@ -1,2 +1,2 @@
.\" $FreeBSD: src/tools/build/options/WITHOUT_SSP,v 1.1 2007/05/19 04:42:58 kan Exp $
-Set to not build propolice stack smashing protection library.
+Set to not build world with propolice stack smashing protection.
--O5XBE6gyVG5Rl6Rj--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080619153105.GL46885>
