[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