[Mono-dev] [PATCH 2/8] mini: Fix unguarded uses of siginfo_t

Andreas Färber andreas.faerber at web.de
Fri Apr 2 06:56:47 EDT 2010


Hello Zoltan,

Am 02.04.2010 um 03:16 schrieb Zoltan Varga:

>   This looks ok.

Thinking about it, does it make sense to patch the functions in this  
way? Without siginfo_t, the functions would always return FALSE so we  
would apparently never get single step or breakpoint events then.

Might it be a better idea to just undef MONO_ARCH_SOFT_DEBUG_SUPPORTED  
in mini-x86.h instead to keep `mono -V` from pretending it works?

Andreas

> On Thu, Apr 1, 2010 at 2:27 AM, Andreas Färber  
> <andreas.faerber at web.de> wrote:
> Haiku does not support SA_SIGINFO-style signal handlers including the
> siginfo_t type.
>
> This commit is licensed under the MIT X11 license.
> ---
>  mono/mini/ChangeLog  |    8 ++++++++
>  mono/mini/mini-x86.c |    8 ++++++++
>  2 files changed, 16 insertions(+), 0 deletions(-)
>
> diff --git a/mono/mini/ChangeLog b/mono/mini/ChangeLog
> index 4c844b0..9045381 100755
> --- a/mono/mini/ChangeLog
> +++ b/mono/mini/ChangeLog
> @@ -1,3 +1,11 @@
> +2010-03-30  Andreas Faerber  <andreas.faerber at web.de>
> +
> +       * mini-x86.c (mono_arch_is_single_step_event,
> +       mono_arch_is_breakpoint_event): New define HAVE_SIG_INFO,
> +       restrict it to MONO_ARCH_USE_SIGACTION to fix build on Haiku.
> +
> +       Code is contributed under MIT/X11 license.
> +
>  2010-03-30 Rodrigo Kumpera  <rkumpera at novell.com>
>
>        * mini-exceptions.c: Introduce mono_walk_stack_full, which
> diff --git a/mono/mini/mini-x86.c b/mono/mini/mini-x86.c
> index 1911501..94b72b4 100644
> --- a/mono/mini/mini-x86.c
> +++ b/mono/mini/mini-x86.c
> @@ -5919,6 +5919,10 @@ mono_arch_stop_single_stepping (void)
>        mono_mprotect (ss_trigger_page, mono_pagesize (),  
> MONO_MMAP_READ);
>  }
>
> +#if defined(MONO_ARCH_USE_SIGACTION)
> +#define HAVE_SIG_INFO
> +#endif
> +
>  /*
>  * mono_arch_is_single_step_event:
>  *
> @@ -5935,11 +5939,13 @@ mono_arch_is_single_step_event (void *info,  
> void *sigctx)
>        else
>                return FALSE;
>  #else
> +#ifdef HAVE_SIG_INFO
>        siginfo_t* sinfo = (siginfo_t*) info;
>        /* Sometimes the address is off by 4 */
>        if (sinfo->si_signo == DBG_SIGNAL && (sinfo->si_addr >=  
> ss_trigger_page && (guint8*)sinfo->si_addr <=  
> (guint8*)ss_trigger_page + 128))
>                return TRUE;
>        else
> +#endif
>                return FALSE;
>  #endif
>  }
> @@ -5954,11 +5960,13 @@ mono_arch_is_breakpoint_event (void *info,  
> void *sigctx)
>        else
>                return FALSE;
>  #else
> +#ifdef HAVE_SIG_INFO
>        siginfo_t* sinfo = (siginfo_t*)info;
>        /* Sometimes the address is off by 4 */
>        if (sinfo->si_signo == DBG_SIGNAL && (sinfo->si_addr >=  
> bp_trigger_page && (guint8*)sinfo->si_addr <=  
> (guint8*)bp_trigger_page + 128))
>                return TRUE;
>        else
> +#endif
>                return FALSE;
>  #endif
>  }
> --
> 1.7.0.3
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20100402/2022e42c/attachment.html 


More information about the Mono-devel-list mailing list