[Pkg-mono-svn-commits] [SCM] mono branch, master-experimental, updated. debian/2.6.3-4-34-gd1bf954

Mirco Bauer meebey at meebey.net
Thu Aug 12 01:17:58 UTC 2010


The following commit has been merged in the master-experimental branch:
commit d7722ae95db3623cb55bf444307f54dd36917381
Merge: 80e52a962bc47f4249b2e08655665ac1e3899e5d 665316e3fe5fcc613bf7ba81d33c05004889d7cf
Author: Mirco Bauer <meebey at meebey.net>
Date:   Mon Aug 2 18:44:42 2010 +0200

    Merge branch 'upstream-experimental' into debian/patches/kfreebsd_support
    
    Conflicts:
    	mono/mini/mini-amd64.h
    	mono/mini/mini-x86.h

diff --combined configure.in
index 4280f97,30c2694..21dd728
--- a/configure.in
+++ b/configure.in
@@@ -6,7 -6,7 +6,7 @@@ AC_CANONICAL_SYSTE
  m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])
  
  AM_CONFIG_HEADER(config.h)
- AM_INIT_AUTOMAKE(mono,2.6.3)
+ AM_INIT_AUTOMAKE(mono,2.6.7)
  AM_MAINTAINER_MODE
  
  API_VER=1.0
@@@ -116,17 -116,6 +116,17 @@@ case "$host" i
  		with_sigaltstack=no
  		use_sigposix=yes
  		;;
 +	*-*-kfreebsd*-gnu)
 +		platform_win32=no
 +		CPPFLAGS="$CPPFLAGS -DGC_FREEBSD_THREADS -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP -DUSE_MUNMAP -DTHREAD_LOCAL_ALLOC -pthread"
 +		libmono_cflags="-D_REENTRANT -DTHREAD_LOCAL_ALLOC -pthread"
 +		libmono_ldflags="-lpthread -pthread"
 +		libdl="-ldl"
 +		libgc_threads=pthreads
 +		need_link_unlink=yes
 +		with_sigaltstack=no
 +		use_sigposix=yes
 +		;;
  	*-*-*freebsd*)
  		platform_win32=no
  		if test "x$PTHREAD_CFLAGS" = "x"; then
@@@ -158,14 -147,18 +158,18 @@@
  		;;
  	*-*-*openbsd*)
  		platform_win32=no
- 		CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_FREEBSD_THREADS -DPLATFORM_BSD"
- 		libmono_cflags="-D_THREAD_SAFE"
+ 		CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE -DGC_OPENBSD_THREADS -DPLATFORM_BSD -D_GNU_SOURCE -D_REENTRANT -DUSE_MMAP"
+ 		if test "x$disable_munmap" != "xyes"; then
+ 		CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP"
+ 		fi
+ 		libmono_cflags="-D_THREAD_SAFE -D_REENTRANT"
  		LDFLAGS="$LDFLAGS -pthread"
  		need_link_unlink=yes
  		AC_DEFINE(PTHREAD_POINTER_ID)
  		libdl=
+ 		gc_default=boehm
  		libgc_threads=pthreads
+ 		with_sigaltstack=no
  		use_sigposix=yes
  		;;
  	*-*-linux*)
@@@ -175,7 -168,6 +179,6 @@@
  			CPPFLAGS="$CPPFLAGS -DUSE_MUNMAP"
  		fi
  		libmono_cflags="-D_REENTRANT"
- 		libmono_ldflags="-lpthread"
  		libdl="-ldl"
  		libgc_threads=pthreads
  		AOT_SUPPORTED="yes"
@@@ -267,6 -259,7 +270,7 @@@ AM_CONDITIONAL(PLATFORM_SIGPOSIX, test 
  
  AC_CHECK_TOOL(CC, gcc, gcc)
  AC_PROG_CC
+ AC_CHECK_TOOL(CXX, g++, g++)
  AC_PROG_CXX
  AM_PROG_AS
  AM_PROG_CC_STDC
@@@ -279,6 -272,14 +283,14 @@@ dnl We should use AM_PROG_AS, but it's 
  AC_SUBST(CCAS)
  AC_SUBST(CCASFLAGS)
  
+ # AC_PROG_CXX helpfully sets CXX to g++ even if no c++ compiler is found so check
+ # GXX instead
+ if test "$GXX" != "yes"; then
+    # automake/libtool is so broken, it requires g++ even if the c++ sources
+    # are inside automake conditionals
+    AC_MSG_ERROR([You need to install g++])
+ fi
+ 
  AC_CHECK_PROG(BISON, bison,yes,no)
  if test "x$BISON" = "xno";
  then
@@@ -326,8 -327,14 +338,14 @@@ f
  AM_CONDITIONAL(NO_VERSION_SCRIPT, test x$no_version_script = xyes)
  
  AC_CHECK_HEADERS(sys/filio.h sys/sockio.h netdb.h utime.h sys/utime.h semaphore.h sys/un.h linux/rtc.h sys/syscall.h sys/mkdev.h sys/uio.h)
- AC_CHECK_HEADERS(sys/user.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h)
+ AC_CHECK_HEADERS(sys/param.h sys/socket.h sys/ipc.h sys/sem.h sys/utsname.h alloca.h ucontext.h pwd.h sys/select.h netinet/tcp.h netinet/in.h unistd.h sys/types.h link.h asm/sigcontext.h)
  
+ AC_CHECK_HEADERS(sys/user.h, [], [],
+ [
+ #ifdef HAVE_SYS_PARAM_H
+ # include <sys/param.h>
+ #endif
+ ])
  
  AC_CHECK_HEADER(zlib.h, [have_zlib=yes], [have_zlib=no])
  if test x$have_zlib = xyes; then
@@@ -623,7 -630,7 +641,7 @@@ DISABLED_FEATURES=non
  
  AC_ARG_ENABLE(minimal, [  --enable-minimal=LIST      drop support for LIST subsystems.
       LIST is a comma-separated list from: aot, profiler, decimal, pinvoke, debug,
-      reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd,soft_debug.],
+      reflection_emit, reflection_emit_save, large_code, logging, com, ssa, generics, attach, jit, simd, soft_debug, normalization.],
  [
  	for feature in `echo "$enable_minimal" | sed -e "s/,/ /g"`; do
  		eval "mono_feature_disable_$feature='yes'"
@@@ -738,6 -745,11 +756,11 @@@ if test "x$mono_feature_disable_soft_de
  	AC_MSG_NOTICE([Disabled Soft Debugger.])
  fi
  
+ if test "x$mono_feature_disable_normalization" = "xyes"; then
+ 	AC_DEFINE(DISABLE_NORMALIZATION, 1, [Disable String normalization support.])
+ 	AC_MSG_NOTICE([Disabled String normalization support.])
+ fi
+ 
  AC_MSG_CHECKING(for visibility __attribute__)
  AC_TRY_COMPILE([], [
     void __attribute__ ((visibility ("hidden"))) doit (void) {}
@@@ -775,6 -787,7 +798,7 @@@ case "x$gc" i
  		AC_SUBST(HAVE_BOEHM_GC)
  		LIBGC_LIBS="-lgc $libdl"
  		LIBGC_STATIC_LIBS="$LIBGC_LIBS"
+ 		libmono_ldflags="$libmono_ldflags -lgc"
  
  		# AC_CHECK_FUNCS does not work for some reason...
  		AC_CHECK_LIB(gc, GC_gcj_malloc, found_gcj_malloc="yes",,$libdl)
@@@ -1239,6 -1252,9 +1263,9 @@@ if test x$platform_win32 = xno; the
  		*-*-*freebsd*)
  			AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread")
  		;;
+ 		*-*-*openbsd*)
+ 			AC_CHECK_LIB(pthread, main, LIBS="$LIBS -pthread")
+ 		;;
  		*)
  			AC_CHECK_LIB(pthread, main, LIBS="$LIBS -lpthread")
  		;;
@@@ -1499,7 -1515,15 +1526,15 @@@
  	dnl *** Checks for SIOCGIFCONF ***
  	dnl ******************************
  	AC_CHECK_HEADERS(sys/ioctl.h)
- 	AC_CHECK_HEADERS(net/if.h)
+ 	AC_CHECK_HEADERS(net/if.h, [], [],
+ 	   [
+ 	   #ifdef HAVE_SYS_TYPES_H
+ 	   # include <sys/types.h>
+ 	   #endif
+ 	   #ifdef HAVE_SYS_SOCKET_H
+ 	   # include <sys/socket.h>
+ 	   #endif
+ 	   ])
  	AC_MSG_CHECKING(for ifreq)
  	AC_TRY_COMPILE([
  		#include <stdio.h>
@@@ -1552,6 -1576,7 +1587,7 @@@
  	dnl *** Checks for MonoPosixHelper ***
  	dnl **********************************
  	AC_CHECK_HEADERS(checklist.h)
+ 	AC_CHECK_HEADERS(pathconf.h)
  	AC_CHECK_HEADERS(fstab.h)
  	AC_CHECK_HEADERS(attr/xattr.h)
  	AC_CHECK_HEADERS(sys/extattr.h)
@@@ -1562,14 -1587,22 +1598,22 @@@
  	AC_CHECK_HEADERS(sys/xattr.h)
  	AC_CHECK_HEADERS(sys/mman.h)
  	AC_CHECK_HEADERS(sys/param.h)
+ 	AC_CHECK_HEADERS(sys/mount.h, [], [],
+ 		[
+ 		#ifdef HAVE_SYS_PARAM_H
+ 		# include <sys/param.h>
+ 		#endif
+ 		])
  	AC_CHECK_HEADERS(sys/mount.h)
+ 	AC_CHECK_FUNCS(confstr)
+ 	AC_CHECK_FUNCS(seekdir telldir)
  	AC_CHECK_FUNCS(getdomainname)
  	AC_CHECK_FUNCS(setdomainname)
- 	AC_CHECK_FUNCS(fgetgrent)
- 	AC_CHECK_FUNCS(fgetpwent)
- 	AC_CHECK_FUNCS(fgetpwent)
+ 	AC_CHECK_FUNCS(endgrent getgrent fgetgrent setgrent)
+ 	AC_CHECK_FUNCS(setgroups)
+ 	AC_CHECK_FUNCS(endpwent getpwent fgetpwent setpwent)
  	AC_CHECK_FUNCS(getfsstat)
- 	AC_CHECK_FUNCS(lutimes)
+ 	AC_CHECK_FUNCS(lutimes futimes)
  	AC_CHECK_FUNCS(mremap)
  	AC_CHECK_FUNCS(remap_file_pages)
  	AC_CHECK_FUNCS(posix_fadvise)
@@@ -1577,7 -1610,8 +1621,8 @@@
  	AC_CHECK_FUNCS(posix_madvise)
  	AC_CHECK_FUNCS(vsnprintf)
  	AC_CHECK_FUNCS(sendfile)
- 	AC_CHECK_FUNCS(sethostid)
+ 	AC_CHECK_FUNCS(gethostid sethostid)
+ 	AC_CHECK_FUNCS(sethostname)
  	AC_CHECK_FUNCS(statfs)
  	AC_CHECK_FUNCS(fstatfs)
  	AC_CHECK_FUNCS(statvfs)
@@@ -1585,6 -1619,11 +1630,11 @@@
  	AC_CHECK_FUNCS(stime)
  	AC_CHECK_FUNCS(strerror_r)
  	AC_CHECK_FUNCS(ttyname_r)
+ 	AC_CHECK_FUNCS(psignal)
+ 	AC_CHECK_FUNCS(getlogin_r)
+ 	AC_CHECK_FUNCS(lockf)
+ 	AC_CHECK_FUNCS(swab)
+ 	AC_CHECK_FUNCS(setusershell endusershell)
  	AC_CHECK_SIZEOF(size_t)
  	AC_CHECK_TYPES([blksize_t], [AC_DEFINE(HAVE_BLKSIZE_T)], , 
  		[#include <sys/types.h>
@@@ -1620,6 -1659,14 +1670,14 @@@
  		[struct dirent.d_off, struct dirent.d_reclen, struct dirent.d_type],,, 
  		[#include <sys/types.h>
  		 #include <dirent.h>])
+ 	AC_CHECK_MEMBERS(
+ 		[struct passwd.pw_gecos],,, 
+ 		[#include <sys/types.h>
+ 		 #include <pwd.h>])
+ 	AC_CHECK_MEMBERS(
+ 		[struct statfs.f_flags],,, 
+ 		[#include <sys/types.h>
+ 		 #include <sys/vfs.h>])
  
  	dnl Favour xattr through glibc, but use libattr if we have to
  	AC_CHECK_FUNC(lsetxattr, ,
@@@ -1631,6 -1678,7 +1689,7 @@@
  	AC_CHECK_MEMBERS(
  		[struct kinfo_proc.kp_proc],,, 
  		[#include <sys/types.h>
+ 		 #include <sys/param.h>
  		 #include <sys/sysctl.h>
  		 #include <sys/proc.h>
  		 ])
@@@ -1711,7 -1759,7 +1770,7 @@@ ac_cv_c_socklen_t=ye
  	AC_MSG_RESULT(no)
  ])
  
- AC_MSG_CHECKING(for array element initalizer support)
+ AC_MSG_CHECKING(for array element initializer support)
  AC_TRY_COMPILE([#include <sys/socket.h>], [
  	const int array[] = {[1] = 2,};
  ], [
@@@ -1754,7 -1802,7 +1813,7 @@@ AC_MSG_RESULT($try_dev_random
  
  case "{$target}" in
      *-openbsd*)
-     NAME_DEV_RANDOM="/dev/srandom"
+     NAME_DEV_RANDOM="/dev/arandom"
      ;;
  
  dnl Win32 does not have /dev/random, they have their own method...
@@@ -2224,11 -2272,6 +2283,11 @@@ case "$host" i
  	LIBC="libc.so.12"
  	INTL="libintl.so.0"
  	;;
 +     *-*-kfreebsd*-gnu)
 +	LIBC="libc.so.0.1"
 +	INTL="libc.so.0.1"
 +	X11="libX11.so.6"
 +	;;
      *-*-*freebsd*)
      	LIBC="libc.so"
  	INTL="libintl.so"
@@@ -2389,7 -2432,11 +2448,11 @@@ AC_ARG_WITH(mcs_docs,[  --with-mcs-docs
  	if test x$with_mcs_docs != xyes; then
  		DISABLE_MCS_DOCS=yes
  	fi
- ])
+ ], [with_moonlight=no])
+ 
+ AC_CHECK_HEADER([malloc.h], 
+ 		[AC_DEFINE([HAVE_USR_INCLUDE_MALLOC_H], [1], 
+ 			[Define to 1 if you have /usr/include/malloc.h.])],,)
  
  dnl
  dnl Consistency settings
@@@ -2731,6 -2778,8 +2794,8 @@@ f
    fi
  )
  
+ AM_CONDITIONAL(DISABLE_MCS_DOCS, test x$DISABLE_MCS_DOCS = xyes)
+ 
  libgdiplus_msg=${libgdiplus_loc:-assumed to be installed}
  
  echo "
diff --combined libgc/configure.in
index dd6e850,2f7e173..c1f5f52
--- a/libgc/configure.in
+++ b/libgc/configure.in
@@@ -84,7 -84,7 +84,7 @@@ case "$THREADS" i
      ;;
   posix | pthreads)
      THREADS=posix
-     THREADDLLIBS=-lpthread
+     AC_CHECK_LIB(pthread, pthread_self, THREADDLLIBS="-lpthread",,)
      case "$host" in
       x86-*-linux* | ia64-*-linux* | i386-*-linux* | i486-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* | alpha*-*-linux* | s390*-*-linux* | sparc*-*-linux* | powerpc-*-linux*)
  	AC_DEFINE(GC_LINUX_THREADS)
@@@ -112,17 -112,6 +112,17 @@@
  	AC_DEFINE(THREAD_LOCAL_ALLOC)
  	THREADDLLIBS="-lpthread -lrt"
  	;;
 +     *-*-kfreebsd*-gnu)
 +	AC_DEFINE(GC_FREEBSD_THREADS)
 +	INCLUDES="$INCLUDES -pthread"
 +	THREADDLLIBS=-pthread
 +	AC_DEFINE(_REENTRANT)
 +	if test "${enable_parallel_mark}" = yes; then
 +		AC_DEFINE(PARALLEL_MARK)
 +	fi
 +	AC_DEFINE(THREAD_LOCAL_ALLOC)
 +	AC_DEFINE(USE_COMPILER_TLS)
 +	;;
        *-*-freebsd*)
  	AC_DEFINE(GC_FREEBSD_THREADS)
  	if test "x$PTHREAD_CFLAGS" != "x"; then
diff --combined libgc/dyn_load.c
index c8d6bed,a42efd4..d9be0bd
--- a/libgc/dyn_load.c
+++ b/libgc/dyn_load.c
@@@ -26,7 -26,7 +26,7 @@@
   * None of this is safe with dlclose and incremental collection.
   * But then not much of anything is safe in the presence of dlclose.
   */
 -#if defined(__linux__) && !defined(_GNU_SOURCE)
 +#if (defined(__linux__) || defined(__GLIBC__)) && !defined(_GNU_SOURCE)
      /* Can't test LINUX, since this must be define before other includes */
  #   define _GNU_SOURCE
  #endif
@@@ -250,7 -250,10 +250,10 @@@ void GC_register_dynamic_libraries(
          char * start;
          register int i;
          
- 	e = (ElfW(Ehdr) *) lm->l_addr;
+         e = (ElfW(Ehdr) *) lm->l_addr;
+         if (e == NULL)
+           continue;
+ 
          p = ((ElfW(Phdr) *)(((char *)(e)) + e->e_phoff));
          offset = ((unsigned long)(lm->l_addr));
          for( i = 0; i < (int)(e->e_phnum); ((i++),(p++)) ) {
@@@ -386,7 -389,7 +389,7 @@@ GC_bool GC_register_main_static_data(
  /* For glibc 2.2.4+.  Unfortunately, it doesn't work for older	*/
  /* versions.  Thanks to Jakub Jelinek for most of the code.	*/
  
 -# if defined(LINUX) /* Are others OK here, too? */ \
 +# if (defined(LINUX) || defined (__GLIBC__)) /* Are others OK here, too? */ \
       && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
           || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG))) 
  
@@@ -544,7 -547,10 +547,10 @@@ void GC_register_dynamic_libraries(
          char * start;
          register int i;
          
- 	e = (ElfW(Ehdr) *) lm->l_addr;
+         e = (ElfW(Ehdr) *) lm->l_addr;
+         if (e == NULL)
+           continue;
+ 
          p = ((ElfW(Phdr) *)(((char *)(e)) + e->e_phoff));
          offset = ((unsigned long)(lm->l_addr));
          for( i = 0; i < (int)(e->e_phnum); ((i++),(p++)) ) {
diff --combined libgc/include/private/gcconfig.h
index f16ee31,30ac306..2c0fbc6
--- a/libgc/include/private/gcconfig.h
+++ b/libgc/include/private/gcconfig.h
@@@ -55,7 -55,7 +55,7 @@@
  # endif
  
  /* And one for FreeBSD: */
 -# if defined(__FreeBSD__) && !defined(FREEBSD)
 +# if (defined(__FreeBSD__) || defined(__FreeBSD_kernel__)) && !defined(FREEBSD)
  #    define FREEBSD
  # endif
  
@@@ -713,6 -713,9 +713,9 @@@
  #	     if defined(__GLIBC__)&& __GLIBC__>=2
  #              define SEARCH_FOR_DATA_START
  #	     else /* !GLIBC2 */
+ #              if defined(PLATFORM_ANDROID)
+ #                      define __environ environ
+ #              endif
                 extern char **__environ;
  #              define DATASTART ((ptr_t)(&__environ))
                               /* hideous kludge: __environ is the first */
@@@ -1307,15 -1310,8 +1310,15 @@@
  #	ifndef GC_FREEBSD_THREADS
  #	    define MPROTECT_VDB
  #	endif
 -#      define SIG_SUSPEND SIGTSTP
 -#      define SIG_THR_RESTART SIGCONT
 +#       ifdef __GLIBC__
 +#           define SIG_SUSPEND          (32+6)
 +#           define SIG_THR_RESTART      (32+5)
 +            extern int _end[];
 +#           define DATAEND (_end)
 +#       else
 +#           define SIG_SUSPEND SIGTSTP
 +#           define SIG_THR_RESTART SIGCONT
 +#       endif
  #	define FREEBSD_STACKBOTTOM
  #	ifdef __ELF__
  #	    define DYNAMIC_LOADING
@@@ -2060,28 -2056,6 +2063,28 @@@
  	extern char * GC_FreeBSDGetDataStart();
  #	define DATASTART GC_FreeBSDGetDataStart(0x1000, &etext)
  #   endif
 +#   ifdef FREEBSD
 +#	define OS_TYPE "FREEBSD"
 +#	ifndef GC_FREEBSD_THREADS
 +#	    define MPROTECT_VDB
 +#	endif
 +#	ifdef __GLIBC__
 +#	    define SIG_SUSPEND		(32+6)
 +#	    define SIG_THR_RESTART	(32+5)
 +	    extern int _end[];
 +#	    define DATAEND (_end)
 +#	else
 +#	    define SIG_SUSPEND SIGUSR1
 +#	    define SIG_THR_RESTART SIGUSR2
 +#	endif
 +#	define FREEBSD_STACKBOTTOM
 +#	ifdef __ELF__
 +#	    define DYNAMIC_LOADING
 +#	endif
 +	extern char etext[];
 +	extern char * GC_FreeBSDGetDataStart();
 +#	define DATASTART GC_FreeBSDGetDataStart(0x1000, &etext)
 +#   endif
  #   ifdef NETBSD
  #	define OS_TYPE "NETBSD"
  #	ifdef __ELF__
@@@ -2153,7 -2127,7 +2156,7 @@@
  #   define SUNOS5SIGS
  # endif
  
 -# if defined(FREEBSD) && (__FreeBSD__ >= 4)
 +# if defined(FREEBSD) && ((__FreeBSD__ >= 4) || (__FreeBSD_kernel__ >= 4))
  #   define SUNOS5SIGS
  # endif
  
@@@ -2216,7 -2190,7 +2219,7 @@@
  #   define CACHE_LINE_SIZE 32	/* Wild guess	*/
  # endif
  
 -# ifdef LINUX
 +# if defined(LINUX) || defined(__GLIBC__)
  #   define REGISTER_LIBRARIES_EARLY
      /* We sometimes use dl_iterate_phdr, which may acquire an internal	*/
      /* lock.  This isn't safe after the world has stopped.  So we must	*/
@@@ -2297,7 -2271,7 +2300,7 @@@
  #if defined(SPARC)
  # define CAN_SAVE_CALL_ARGS
  #endif
 -#if (defined(I386) || defined(X86_64)) && defined(LINUX)
 +#if (defined(I386) || defined(X86_64)) && (defined(LINUX) || defined(__GLIBC__))
  	    /* SAVE_CALL_CHAIN is supported if the code is compiled to save	*/
  	    /* frame pointers by default, i.e. no -fomit-frame-pointer flag.	*/
  # define CAN_SAVE_CALL_ARGS
diff --combined mono/mini/mini-amd64.h
index 8b297ce,a16f957..4387deb
--- a/mono/mini/mini-amd64.h
+++ b/mono/mini/mini-amd64.h
@@@ -254,10 -254,6 +254,6 @@@ typedef struct 
  
  #endif
  
- #ifdef __OpenBSD__
- #undef MONO_ARCH_USE_SIGACTION
- #endif
- 
  #endif /* PLATFORM_WIN32 */
  
  #if defined (__NetBSD__)
@@@ -282,7 -278,11 +278,11 @@@
  
  #define MONO_ARCH_NOMAP32BIT
  
- #elif defined (__FreeBSD__) || defined(__FreeBSD_kernel__) || defined (__OpenBSD__)
+ #elif defined (__OpenBSD__)
+ 
+ #define MONO_ARCH_NOMAP32BIT
+ 
 -#elif defined (__FreeBSD__)
++#elif defined (__FreeBSD__) || defined(__FreeBSD_kernel__)
  
  #define REG_RAX 7
  #define REG_RCX 4
diff --combined mono/mini/mini-x86.h
index b83c937,a5e65f2..89c91c4
--- a/mono/mini/mini-x86.h
+++ b/mono/mini/mini-x86.h
@@@ -44,7 -44,8 +44,8 @@@ LONG CALLBACK seh_handler(EXCEPTION_POI
  
  #endif /* PLATFORM_WIN32 */
  
- #if defined( __linux__) || defined(__sun) || defined(__APPLE__) || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+ #if defined( __linux__) || defined(__sun) || defined(__APPLE__) || defined(__NetBSD__) || \
 -       defined(__FreeBSD__) || defined(__OpenBSD__)
++       defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__OpenBSD__)
  #define MONO_ARCH_USE_SIGACTION
  #endif
  
@@@ -150,7 -151,7 +151,7 @@@ typedef struct 
  	gboolean need_stack_frame;
  } MonoCompileArch;
  
 -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
 +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__)
  # define SC_EAX sc_eax
  # define SC_EBX sc_ebx
  # define SC_ECX sc_ecx
@@@ -252,6 -253,9 +253,9 @@@ typedef struct 
  #define MONO_ARCH_MONITOR_OBJECT_REG X86_EAX
  #endif
  #define MONO_ARCH_HAVE_STATIC_RGCTX_TRAMPOLINE 1
+ #define MONO_ARCH_HAVE_FULL_AOT_TRAMPOLINES 1
+ #define MONO_ARCH_GOT_REG X86_EBX
+ #define MONO_ARCH_HAVE_GET_TRAMPOLINES 1
  
  #define MONO_ARCH_HAVE_CMOV_OPS 1
  
@@@ -273,6 -277,7 +277,7 @@@
  //#define MONO_ARCH_HAVE_LLVM_IMT_TRAMPOLINE 1
  #define MONO_ARCH_SOFT_DEBUG_SUPPORTED 1
  #define MONO_ARCH_HAVE_FIND_JIT_INFO_EXT 1
+ #define MONO_ARCH_HAVE_EXCEPTIONS_INIT 1
  
  /* Used for optimization, not complete */
  #define MONO_ARCH_IS_OP_MEMBASE(opcode) ((opcode) == OP_X86_PUSH_MEMBASE)
@@@ -297,5 -302,16 +302,16 @@@ extern MonoBreakpointInfo mono_breakpoi
  guint8*
  mono_x86_emit_tls_get (guint8* code, int dreg, int tls_offset) MONO_INTERNAL;
  
+ void
+ mono_x86_throw_exception (mgreg_t *regs, MonoObject *exc, 
+ 						  mgreg_t eip, gboolean rethrow) MONO_INTERNAL;
+ 
+ void
+ mono_x86_throw_corlib_exception (mgreg_t *regs, guint32 ex_token_index, 
+ 								 mgreg_t eip, gint32 pc_offset) MONO_INTERNAL;
+ 
+ void 
+ mono_x86_patch (unsigned char* code, gpointer target) MONO_INTERNAL;
+ 
  #endif /* __MONO_MINI_X86_H__ */  
  
diff --combined mono/utils/mono-sigcontext.h
index a057620,5785e1e..625e888
--- a/mono/utils/mono-sigcontext.h
+++ b/mono/utils/mono-sigcontext.h
@@@ -5,14 -5,14 +5,14 @@@
  
  #if defined(__i386__)
  
 -#if defined(__FreeBSD__) || defined(__APPLE__)
 +#if defined(__FreeBSD__) || defined(__APPLE__) || defined(__FreeBSD_kernel__)
  #include <ucontext.h>
  #endif
  #if defined(__APPLE__)
  #include <AvailabilityMacros.h>
  #endif
  
 -#if defined(__FreeBSD__)
 +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
  	#define UCONTEXT_REG_EAX(ctx) (((ucontext_t*)(ctx))->uc_mcontext.mc_eax)
  	#define UCONTEXT_REG_EBX(ctx) (((ucontext_t*)(ctx))->uc_mcontext.mc_ebx)
  	#define UCONTEXT_REG_ECX(ctx) (((ucontext_t*)(ctx))->uc_mcontext.mc_ecx)
@@@ -54,6 -54,16 +54,16 @@@
  	#define UCONTEXT_REG_ESI(ctx) (((ucontext_t*)(ctx))->uc_mcontext.__gregs [_REG_ESI])
  	#define UCONTEXT_REG_EDI(ctx) (((ucontext_t*)(ctx))->uc_mcontext.__gregs [_REG_EDI])
  	#define UCONTEXT_REG_EIP(ctx) (((ucontext_t*)(ctx))->uc_mcontext.__gregs [_REG_EIP])
+ #elif defined(__OpenBSD__)
+ 	#define UCONTEXT_REG_EAX(ctx) ((ctx)->sc_eax)
+ 	#define UCONTEXT_REG_EBX(ctx) ((ctx)->sc_ebx)
+ 	#define UCONTEXT_REG_ECX(ctx) ((ctx)->sc_ecx)
+ 	#define UCONTEXT_REG_EDX(ctx) ((ctx)->sc_edx)
+ 	#define UCONTEXT_REG_EBP(ctx) ((ctx)->sc_ebp)
+ 	#define UCONTEXT_REG_ESP(ctx) ((ctx)->sc_esp)
+ 	#define UCONTEXT_REG_ESI(ctx) ((ctx)->sc_esi)
+ 	#define UCONTEXT_REG_EDI(ctx) ((ctx)->sc_edi)
+ 	#define UCONTEXT_REG_EIP(ctx) ((ctx)->sc_eip)
  #else
  	#define UCONTEXT_REG_EAX(ctx) (((ucontext_t*)(ctx))->uc_mcontext.gregs [REG_EAX])
  	#define UCONTEXT_REG_EBX(ctx) (((ucontext_t*)(ctx))->uc_mcontext.gregs [REG_EBX])
@@@ -68,10 -78,38 +78,38 @@@
  
  #elif defined(__x86_64__)
  
 -#ifdef __FreeBSD__
 +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
  #define UCONTEXT_GREGS(ctx)	&(((ucontext_t*)(ctx))->uc_mcontext)
+ #elif defined(__OpenBSD__)
+ 	/* OpenBSD/amd64 has no gregs array, ucontext_t == sigcontext */
+ 	#define UCONTEXT_REG_RAX(ctx) ((ctx)->sc_rax)
+ 	#define UCONTEXT_REG_RBX(ctx) ((ctx)->sc_rbx)
+ 	#define UCONTEXT_REG_RCX(ctx) ((ctx)->sc_rcx)
+ 	#define UCONTEXT_REG_RDX(ctx) ((ctx)->sc_rdx)
+ 	#define UCONTEXT_REG_RBP(ctx) ((ctx)->sc_rbp)
+ 	#define UCONTEXT_REG_RSP(ctx) ((ctx)->sc_rsp)
+ 	#define UCONTEXT_REG_RSI(ctx) ((ctx)->sc_rsi)
+ 	#define UCONTEXT_REG_RDI(ctx) ((ctx)->sc_rdi)
+ 	#define UCONTEXT_REG_RIP(ctx) ((ctx)->sc_rip)
+ 	#define UCONTEXT_REG_R12(ctx) ((ctx)->sc_r12)
+ 	#define UCONTEXT_REG_R13(ctx) ((ctx)->sc_r13)
+ 	#define UCONTEXT_REG_R14(ctx) ((ctx)->sc_r14)
+ 	#define UCONTEXT_REG_R15(ctx) ((ctx)->sc_r15)
  #else
- #define UCONTEXT_GREGS(ctx)	&(((ucontext_t*)(ctx))->uc_mcontext.gregs)
+ #define UCONTEXT_GREGS(ctx)	((guint64*)&(((ucontext_t*)(ctx))->uc_mcontext.gregs))
+ #define UCONTEXT_REG_RAX(ctx) (UCONTEXT_GREGS ((ctx)) [REG_RAX])
+ #define UCONTEXT_REG_RBX(ctx) (UCONTEXT_GREGS ((ctx)) [REG_RBX])
+ #define UCONTEXT_REG_RCX(ctx) (UCONTEXT_GREGS ((ctx)) [REG_RCX])
+ #define UCONTEXT_REG_RDX(ctx) (UCONTEXT_GREGS ((ctx)) [REG_RDX])
+ #define UCONTEXT_REG_RBP(ctx) (UCONTEXT_GREGS ((ctx)) [REG_RBP])
+ #define UCONTEXT_REG_RSP(ctx) (UCONTEXT_GREGS ((ctx)) [REG_RSP])
+ #define UCONTEXT_REG_RSI(ctx) (UCONTEXT_GREGS ((ctx)) [REG_RSI])
+ #define UCONTEXT_REG_RDI(ctx) (UCONTEXT_GREGS ((ctx)) [REG_RDI])
+ #define UCONTEXT_REG_RIP(ctx) (UCONTEXT_GREGS ((ctx)) [REG_RIP])
+ #define UCONTEXT_REG_R12(ctx) (UCONTEXT_GREGS ((ctx)) [REG_R12])
+ #define UCONTEXT_REG_R13(ctx) (UCONTEXT_GREGS ((ctx)) [REG_R13])
+ #define UCONTEXT_REG_R14(ctx) (UCONTEXT_GREGS ((ctx)) [REG_R14])
+ #define UCONTEXT_REG_R15(ctx) (UCONTEXT_GREGS ((ctx)) [REG_R15])
  #endif
  
  #elif defined(__mono_ppc__)

-- 
mono



More information about the Pkg-mono-svn-commits mailing list