summaryrefslogtreecommitdiff
path: root/Mk/bsd.ssp.mk
blob: adb6a3bfcf0d3b027a99d90992ab9f6725b78313 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# $FreeBSD$
# SSP Support

SSP_Include_MAINTAINER=	portmgr@FreeBSD.org

# See: http://svnweb.freebsd.org/base/head/lib/libc/libc.ldscript?revision=251668&view=markup
.if ${OSVERSION} < 1000036 && ${ARCH} == i386

# Disabled on i386 for now on releases without the ldscript as too many ports
# do not respect LDFLAGS and fail to build due to not adding in -lssp_nonshared when needed
# despite dependencies working fine, which breaks a lot. Can enable once LDFLAGS is more
# supported. XXX
SSP_UNSAFE=		yes

# i386 needs -lssp_nonshared, see svn link above for more information
SSP_NEED_NONSHARED=	yes
.endif

.if !defined(WITHOUT_SSP) && !defined(SSP_UNSAFE) && \
    (${ARCH} == i386 || ${ARCH} == amd64)
# Overridable as a user may want to use -fstack-protector-all
SSP_CFLAGS?=	-fstack-protector
CFLAGS:=	${CFLAGS} ${SSP_CFLAGS}
LDFLAGS:=	${LDFLAGS} -fstack-protector
# -lssp_nonshared is needed on i386 where /usr/lib/libc.so is not an ldscript
# This is currently unused XXX
.	if defined(SSP_NEED_NONSHARED)
LDFLAGS:=	${LDFLAGS} -lssp_nonshared
.	endif
.endif