diff -rc ../boost-coroutine/boost/coroutine/coroutine.hpp boost-coroutine/boost/coroutine/coroutine.hpp
*** ../boost-coroutine/boost/coroutine/coroutine.hpp	Wed Apr 29 14:41:05 2009
--- boost-coroutine/boost/coroutine/coroutine.hpp	Wed Apr 22 09:35:22 2009
***************
*** 28,33 ****
--- 28,36 ----
  
  #ifndef BOOST_COROUTINE_COROUTINE_HPP_20060512
  #define BOOST_COROUTINE_COROUTINE_HPP_20060512
+ // On Linux systems, use native swapcontext() et al. rather than
+ // Boost.Coroutine homebrew assembler
+ #define BOOST_COROUTINE_NO_ASM
  // default_context_impl.hpp must be first for weird Apple bug
  #include <boost/coroutine/detail/default_context_impl.hpp>
  #include <cstddef>
diff -rc ../boost-coroutine/boost/coroutine/future.hpp boost-coroutine/boost/coroutine/future.hpp
*** ../boost-coroutine/boost/coroutine/future.hpp	Wed Apr 29 14:41:05 2009
--- boost-coroutine/boost/coroutine/future.hpp	Wed Apr 22 09:35:26 2009
***************
*** 33,38 ****
--- 33,41 ----
  #ifndef BOOST_COROUTINE_WAIT_MAX
  #define BOOST_COROUTINE_WAIT_MAX 10
  #endif
+ // On Linux systems, use native swapcontext() et al. rather than
+ // Boost.Coroutine homebrew assembler
+ #define BOOST_COROUTINE_NO_ASM
  // default_context_impl.hpp must be first for weird Apple bug
  #include <boost/coroutine/detail/default_context_impl.hpp>
  #include <boost/none.hpp>
diff -u -r old/boost/coroutine/detail/coroutine_impl.hpp new/boost/coroutine/detail/coroutine_impl.hpp
--- old/boost/coroutine/detail/coroutine_impl.hpp	2009-10-20 17:10:02.000000000 +0100
+++ new/boost/coroutine/detail/coroutine_impl.hpp	2009-10-20 19:22:11.000000000 +0100
@@ -56,7 +56,7 @@
     typedef ContextImpl context_impl;
     typedef CoroutineType coroutine_type;
     typedef coroutine_impl<coroutine_type, context_impl> type;
-    typedef context_base<context_impl> context_base;
+    typedef context_base<context_impl> context_base_type;
     typedef typename coroutine_type::arg_slot_type arg_slot_type;
     typedef typename coroutine_type::result_type result_type;
     typedef typename coroutine_type::result_slot_type result_slot_type;
@@ -65,7 +65,7 @@
   
     template<typename DerivedType>
 	coroutine_impl(DerivedType * this_, std::ptrdiff_t stack_size) :
-      context_base(*this_, stack_size),
+      context_base_type(*this_, stack_size),
 	m_arg(0),
 	m_result(0){}
                 
diff -u -r old/boost/coroutine/detail/posix_utility.hpp new/boost/coroutine/detail/posix_utility.hpp
--- old/boost/coroutine/detail/posix_utility.hpp	2009-04-24 21:30:44.000000000 +0100
+++ new/boost/coroutine/detail/posix_utility.hpp	2009-10-20 19:21:27.000000000 +0100
@@ -39,6 +39,7 @@
 #include <cstddef>
 #include <cstdlib>
 #include <iostream>
+#include <cstring>
 #include <boost/type_traits.hpp>
 #if defined(_POSIX_MAPPED_FILES) && _POSIX_MAPPED_FILES > 0
 #include <sys/mman.h>
