All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3/3] Add support for OpenBSD
@ 2006-10-17 14:44 Christoph Egger
  2006-10-18 15:51 ` Keir Fraser
  0 siblings, 1 reply; 7+ messages in thread
From: Christoph Egger @ 2006-10-17 14:44 UTC (permalink / raw)
  To: xen-devel

[-- Attachment #1: Type: text/plain, Size: 253 bytes --]


Hi!

This is the third and last patch.

This patch makes the xen kernel buildable on OpenBSD by adding support for 
ProPolice. ProPolice has been added to standard GCC in version 4.1.x under
the name Stack Smashing Protection (SSP).

Cheers
Christoph


[-- Attachment #2: openbsd_propolice.diff --]
[-- Type: text/x-diff, Size: 2702 bytes --]

diff -r bd207697f0c7 xen/arch/x86/boot/mkelf32.c
--- a/xen/arch/x86/boot/mkelf32.c	Wed Oct 18 13:43:35 2006 +0100
+++ b/xen/arch/x86/boot/mkelf32.c	Tue Oct 17 16:39:13 2006 +0200
@@ -90,9 +90,15 @@ static Elf32_Shdr out_shdr[] = {
     }
 };
 
+#ifndef swap16
 #define swap16(_v) ((((u16)(_v)>>8)&0xff)|(((u16)(_v)&0xff)<<8))
+#endif
+#ifndef swap32
 #define swap32(_v) (((u32)swap16((u16)(_v))<<16)|(u32)swap16((u32)((_v)>>16)))
+#endif
+#ifndef swap64
 #define swap64(_v) (((u64)swap32((u32)(_v))<<32)|(u64)swap32((u32)((_v)>>32)))
+#endif
 
 static int big_endian;
 
diff -r bd207697f0c7 xen/arch/x86/setup.c
--- a/xen/arch/x86/setup.c	Wed Oct 18 13:43:35 2006 +0100
+++ b/xen/arch/x86/setup.c	Tue Oct 17 16:39:13 2006 +0200
@@ -16,6 +16,7 @@
 #include <xen/percpu.h>
 #include <xen/hypercall.h>
 #include <xen/keyhandler.h>
+#include <xen/guard.h>
 #include <public/version.h>
 #include <asm/bitops.h>
 #include <asm/smp.h>
@@ -625,6 +626,8 @@ void __init __start_xen(multiboot_info_t
                         cmdline) != 0)
         panic("Could not set up DOM0 guest OS\n");
 
+    init_guard();
+
     /* Scrub RAM that is still free and so may go to an unprivileged domain. */
     scrub_heap_pages();
 
diff -r bd207697f0c7 xen/common/Makefile
--- a/xen/common/Makefile	Wed Oct 18 13:43:35 2006 +0100
+++ b/xen/common/Makefile	Tue Oct 17 16:39:13 2006 +0200
@@ -5,6 +5,7 @@ obj-y += elf.o
 obj-y += elf.o
 obj-y += event_channel.o
 obj-y += grant_table.o
+obj-y += guard.o
 obj-y += kernel.o
 obj-y += keyhandler.o
 obj-y += lib.o
diff -r bd207697f0c7 xen/common/guard.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/common/guard.c	Tue Oct 17 16:39:13 2006 +0200
@@ -0,0 +1,34 @@
+
+#include <xen/lib.h>
+
+long __guard[8];
+
+void __stack_smash_handler(char [], int __attribute__((unused)));
+
+void
+__stack_smash_handler(char func[], int damaged)
+{
+        panic("smashed stack in %s", func);
+}
+
+
+void init_guard(void)
+{
+	volatile long newguard[8];
+	int i;
+
+	/* XXX newguard is intended to get filled with random values.
+	 * But there's nothing to use, so this is just something
+	 * out of my head :) */
+	newguard[0] = 103958;
+	newguard[1] = 3505;
+	newguard[2] = 75601;
+	newguard[3] = 35703;
+	newguard[4] = 94;
+	newguard[5] = 721;
+	newguard[6] = 3094;
+	newguard[7] = 217;
+
+	for (i = sizeof(__guard) / sizeof(__guard[0]) - 1; i; i--)
+		__guard[i] = newguard[i];
+}
diff -r bd207697f0c7 xen/include/xen/guard.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/xen/guard.h	Tue Oct 17 16:39:13 2006 +0200
@@ -0,0 +1,3 @@
+
+
+void init_guard(void);
+

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2006-10-19 14:21 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-10-17 14:44 [PATCH 3/3] Add support for OpenBSD Christoph Egger
2006-10-18 15:51 ` Keir Fraser
2006-10-18  7:08   ` Christoph Egger
2006-10-19  7:51     ` Keir Fraser
2006-10-18  8:55       ` Christoph Egger
2006-10-19 11:23         ` Keir Fraser
2006-10-19 14:21           ` Christoph Egger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.