Zoltan Varga wrote:

For the sigcontext stuff, I think it would be easier to define
MONO_ARCH_USE_SIGACTION in mini-x86.h for *BSD as well. Could you try
this ?


Both NetBSD and FreeBSD seem to be on their way towards ucontext{} and away from sigcontext. NetBSD completely hides sigcontext{} in the latest 1.6.x source code, on the way to 2.0, except when __KERNEL is defined. FreeBSD > 5.4_PRERELEASE, however, has taken a different approach to the migration, and is attempting to make a backwards compatible union out of sigcontext{} and ucontext_t{}. Neither case will support the ucontext code as currently written in exceptions-x86.c, since the .gregs[] array isn't part of BSD ucontext at all. In every case, the older definitions for sigcontext must be supported to continue to build on any but the absolute latest and most cutting-edge BSD kernel/userlands with much futzing.

I do agree though, that BSD* should eventually have it's own exception code for signaling and exceptions based on ucontext_t{}, like s390 (for example). It will be a chore though, given the mutations and intent/purpose between the BSD flavors. Not to mention the likely loss of at least some the x86 optimizations which are possible with direct munging of sigcontext.

I hope my patch can go in as is, and the future changes to the exception code will support the older #define's for bsd - it's just too early to try to make the switch to MONO_ARCH_USE_SIGACTION right now, imho.

And we haven't even touched on the threads and the (almost there) support for __thread on FreeBSD, nor sigaltstack(), but then I don't want my head to explode today, either.

Bill




_______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to