+2002-10-31 David O'Brien <obrien@FreeBSD.org>
+
+ * config/sparc/freebsd.h (TRANSFER_FROM_TRAMPOLINE): Define
+ __enable_execute_stack function.
+
2002-10-30 Aldy Hernandez <aldyh@redhat.com>
* c-common.c: Add GTY to vector_type_node_list.
#undef SPARC_DEFAULT_CMODEL
#define SPARC_DEFAULT_CMODEL CM_MEDLOW
+#define TRANSFER_FROM_TRAMPOLINE \
+static int need_enable_exec_stack; \
+ \
+static void check_enabling(void) __attribute__ ((constructor)); \
+static void check_enabling(void) \
+{ \
+ extern int sysctlbyname(const char *, void *, size_t *, void *, size_t);\
+ size_t len; \
+ int prot; \
+ \
+ prot = 0; \
+ len = sizeof(prot); \
+ sysctlbyname ("kern.stackprot", &prot, &len, NULL, 0); \
+ if (prot != 7) \
+ need_enable_exec_stack = 1; \
+} \
+ \
+extern void __enable_execute_stack (void *); \
+void \
+__enable_execute_stack (addr) \
+ void *addr; \
+{ \
+ if (!need_enable_exec_stack) \
+ return; \
+ else { \
+ /* 7 is PROT_READ | PROT_WRITE | PROT_EXEC */ \
+ if (mprotect (addr, TRAMPOLINE_SIZE, 7) < 0) \
+ perror ("mprotect of trampoline code"); \
+ } \
+}
+
/************************[ Assembler stuff ]********************************/