Wrap text
Report abuse
From b9cad55931ffc8450cc04eeb2d6ac72ff7ccb60e Mon Sep 17 00:00:00 2001
From: ragge
Date: Sat, 16 Feb 2008 15:32:28 +0100
Subject: [PATCH] Make shotgun compile on OpenBSD.
Initial fixes, some ugly stuff. The Makefile should probably be tidied for different platforms, somehow.
Shotgun crashes when compiling kernel/core/compiler.rb
---
shotgun/lib/Makefile | 16 +++++++++---
shotgun/lib/ffi_util.c | 2 +-
shotgun/lib/state.h | 2 +-
shotgun/lib/subtend/PortableUContext.h | 38 ++++++++++++++++++---------
shotgun/lib/subtend/PortableUContext_asm.S | 6 ++++
5 files changed, 45 insertions(+), 19 deletions(-)
diff --git a/shotgun/lib/Makefile b/shotgun/lib/Makefile
index 95a095f..afed93c 100644
--- a/shotgun/lib/Makefile
+++ b/shotgun/lib/Makefile
@@ -38,11 +38,19 @@ endif
# Darwin doesn't need -lcrypt or -lrt
# BSD does not need -lrt
-ifneq ($(UNAME),Darwin)
- LIBS+= -lcrypt
-ifneq ($(findstring BSD,$(UNAME)),BSD)
- LIBS+= -lrt
+#ifneq ($(UNAME),Darwin)
+# LIBS+= -lcrypt
+#ifneq ($(findstring BSD,$(UNAME)),BSD)
+# LIBS+= -lrt
+#endif
+#endif
+
+ifeq ($(UNAME),Linux)
+ LIBS+= -lrt -lcrypt
endif
+
+ifeq ($(UNAME),FreeBSD)
+ LIBS+= -lcrypt
endif
# BSD needs special PThread handling
diff --git a/shotgun/lib/ffi_util.c b/shotgun/lib/ffi_util.c
index b85b859..90b6baf 100644
--- a/shotgun/lib/ffi_util.c
+++ b/shotgun/lib/ffi_util.c
@@ -1,7 +1,7 @@
+#include
#include
#include
#include
-#include
#include
#include
#include
diff --git a/shotgun/lib/state.h b/shotgun/lib/state.h
index 04720ac..b70133e 100644
--- a/shotgun/lib/state.h
+++ b/shotgun/lib/state.h
@@ -1,7 +1,7 @@
#ifndef RBS_STATE_H
#define RBS_STATE_H
-#include
+/*#include */
#include
#include
diff --git a/shotgun/lib/subtend/PortableUContext.h b/shotgun/lib/subtend/PortableUContext.h
index a0d8d8c..21cbba3 100644
--- a/shotgun/lib/subtend/PortableUContext.h
+++ b/shotgun/lib/subtend/PortableUContext.h
@@ -6,7 +6,7 @@
#define HAS_UCONTEXT 1
#endif
-#if defined(__FreeBSD__) || (defined(__APPLE__) && !__DARWIN_UNIX03)
+#if defined(__FreeBSD__) || (defined(__APPLE__) && __DARWIN_UNIX03)
#include
#include
@@ -51,18 +51,7 @@ extern void makecontext(ucontext_t*, void(*)(), int, ...);
# define NEEDSWAPCONTEXT
#endif
-#if defined(__OpenBSD__)
-# define mcontext libthread_mcontext
-# define mcontext_t libthread_mcontext_t
-# define ucontext libthread_ucontext
-# define ucontext_t libthread_ucontext_t
-# if defined __i386__
-# include "PortableUContext386.h"
-# else
-# include "PortableUContextPPC.h"
-# endif
-extern pid_t rfork_thread(int, void*, int(*)(void*), void*);
-#endif
+
#if 0 && defined(__sun__)
# define mcontext libthread_mcontext
@@ -86,7 +75,30 @@ void setmcontext(const mcontext_t*);
#define NEEDSWAPCONTEXT
#endif
+#endif
+#if defined(__OpenBSD__)
+#include
+#include
+#include
+#include
+#include
+#include
+
+# define mcontext libthread_mcontext
+# define mcontext_t libthread_mcontext_t
+# define ucontext libthread_ucontext
+# define ucontext_t libthread_ucontext_t
+# if defined(__i386__)
+# include "PortableUContext386.h"
+# define NEEDX86MAKECONTEXT
+# define NEEDXSWAPCONTEXT
+# else
+# include "PortableUContextPPC.h"
+# endif
+extern pid_t rfork_thread(int, void*, int(*)(void*), void*);
#endif
+
+
#endif
diff --git a/shotgun/lib/subtend/PortableUContext_asm.S b/shotgun/lib/subtend/PortableUContext_asm.S
index 8b04330..117d4b5 100644
--- a/shotgun/lib/subtend/PortableUContext_asm.S
+++ b/shotgun/lib/subtend/PortableUContext_asm.S
@@ -31,6 +31,12 @@ This software was developed as part of a project at MIT.
#define GET getmcontext
#endif
+#if defined(__OpenBSD__) && defined(__i386__)
+#define NEEDX86CONTEXT 1
+#define SET setmcontext
+#define GET getmcontext
+#endif
+
#if defined(__APPLE__)
#include "sys/cdefs.h"
#endif
--
1.5.3.7