Page MenuHomeFreeBSD

D22943.id66071.diff
No OneTemporary

D22943.id66071.diff

Index: lib/Makefile
===================================================================
--- lib/Makefile
+++ lib/Makefile
@@ -18,6 +18,8 @@
${_libcplusplus} \
${_libcxxrt} \
libelf \
+ libssp \
+ libssp_nonshared \
msun
# The main list; please keep these sorted alphabetically.
Index: lib/libc/secure/stack_protector.c
===================================================================
--- lib/libc/secure/stack_protector.c
+++ lib/libc/secure/stack_protector.c
@@ -58,6 +58,7 @@
__attribute__((__constructor__, __used__));
#endif
+extern long __stack_chk_guard[8];
extern int __sysctl(const int *name, u_int namelen, void *oldp,
size_t *oldlenp, void *newp, size_t newlen);
@@ -73,8 +74,8 @@
{
static const int mib[2] = { CTL_KERN, KERN_ARND };
volatile long tmp_stack_chk_guard[nitems(__stack_chk_guard)];
- size_t len;
- int error, idx;
+ size_t idx, len;
+ int error;
if (__stack_chk_guard[0] != 0)
return;
@@ -84,7 +85,8 @@
* data into a temporal array, then do manual volatile copy to
* not allow optimizer to call memcpy() behind us.
*/
- error = _elf_aux_info(AT_CANARY, (void *)tmp_stack_chk_guard,
+ error = _elf_aux_info(AT_CANARY,
+ __DEQUALIFY(void *, tmp_stack_chk_guard),
sizeof(tmp_stack_chk_guard));
if (error == 0 && tmp_stack_chk_guard[0] != 0) {
for (idx = 0; idx < nitems(__stack_chk_guard); idx++) {
Index: lib/libc/secure/stack_protector_compat.c
===================================================================
--- lib/libc/secure/stack_protector_compat.c
+++ lib/libc/secure/stack_protector_compat.c
@@ -6,15 +6,25 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
+#ifdef IN_LIBSSP
+#define HIDDEN_ATTR __hidden
+#define __stack_chk_fail_local_hidden _stack_chk_fail_local
+#else
+#define HIDDEN_ATTR
+#endif
+
void __stack_chk_fail(void);
+void __stack_chk_fail_local_hidden(void);
-#ifdef PIC
-void
+#if defined(IN_LIBSSP) || defined(PIC)
+void HIDDEN_ATTR
__stack_chk_fail_local_hidden(void)
{
__stack_chk_fail();
}
+#endif
+#ifdef PIC
__sym_compat(__stack_chk_fail_local, __stack_chk_fail_local_hidden, FBSD_1.0);
#endif
Index: lib/libssp/Makefile
===================================================================
--- /dev/null
+++ lib/libssp/Makefile
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+PACKAGE= clibs
+SHLIBDIR?= /lib
+SHLIB= ssp
+SHLIB_MAJOR= 1
+
+VERSION_DEF= ${.CURDIR}/Versions.def
+SYMBOL_MAPS= ${.CURDIR}/Symbol.map
+
+.PATH: ${SRCTOP}/lib/libc/secure
+CFLAGS+= -I${SRCTOP}/lib/libc/include -DIN_LIBSSP
+SRCS= stack_protector.c
+
+.include <bsd.lib.mk>
Index: lib/libssp/Symbol.map
===================================================================
--- /dev/null
+++ lib/libssp/Symbol.map
@@ -0,0 +1,9 @@
+/*
+ * $FreeBSD$
+ */
+
+LIBSSP_1.0 {
+ __chk_fail;
+ __stack_chk_fail;
+ __stack_chk_guard;
+};
Index: lib/libssp/Versions.def
===================================================================
--- /dev/null
+++ lib/libssp/Versions.def
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+LIBSSP_1.0 {
+};
Index: lib/libssp_nonshared/Makefile
===================================================================
--- /dev/null
+++ lib/libssp_nonshared/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+PACKAGE= clibs
+LIB= ssp_nonshared
+NO_PIC=
+MK_PROFILE= no
+
+.PATH: ${SRCTOP}/lib/libc/secure
+CFLAGS+= -I${SRCTOP}/lib/libc/include -DIN_LIBSSP
+SRCS= stack_protector_compat.c
+
+.include <bsd.lib.mk>

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 24, 12:10 AM (20 h, 46 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30214854
Default Alt Text
D22943.id66071.diff (3 KB)

Event Timeline