summaryrefslogtreecommitdiffstats
path: root/share/mk
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2009-07-14 21:19:13 +0000
committerkan <kan@FreeBSD.org>2009-07-14 21:19:13 +0000
commitef443476d9706035ac219f0280ef0b817dda7a6d (patch)
tree50c2540e7067c9b377ade1910cd0348aeab454e7 /share/mk
parentd81f73fcb520cff58dcafda0e644b91837b26a40 (diff)
downloadFreeBSD-src-ef443476d9706035ac219f0280ef0b817dda7a6d.zip
FreeBSD-src-ef443476d9706035ac219f0280ef0b817dda7a6d.tar.gz
Second attempt at eliminating .text relocations in shared libraries
compiled with stack protector. Use libssp_nonshared library to pull __stack_chk_fail_local symbol into each library that needs it instead of pulling it from libc. GCC generates local calls to this function which result in absolute relocations put into position-independent code segment, making dynamic loader do extra work every time given shared library is being relocated and making affected text pages non-shareable. Reviewed by: kib Approved by: re (kib)
Diffstat (limited to 'share/mk')
-rw-r--r--share/mk/bsd.lib.mk4
1 files changed, 2 insertions, 2 deletions
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index 741c9cb..982ff50 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -200,11 +200,11 @@ ${SHLIB_NAME}: ${SOBJS}
@ln -fs ${.TARGET} ${SHLIB_LINK}
.endif
.if !defined(NM)
- @${CC} ${LDFLAGS} -shared -Wl,-x \
+ @${CC} ${LDFLAGS} ${SSP_CFLAGS} -shared -Wl,-x \
-o ${.TARGET} -Wl,-soname,${SONAME} \
`lorder ${SOBJS} | tsort -q` ${LDADD}
.else
- @${CC} ${LDFLAGS} -shared -Wl,-x \
+ @${CC} ${LDFLAGS} ${SSP_CFLAGS} -shared -Wl,-x \
-o ${.TARGET} -Wl,-soname,${SONAME} \
`NM='${NM}' lorder ${SOBJS} | tsort -q` ${LDADD}
.endif
OpenPOWER on IntegriCloud