On Mar 31 18:46, Jon TURNEY wrote: > * external.cc (cygwin_internal): Add operation to convert > siginfo_t * to EXCEPTION_RECORD *. > * include/sys/cygwin.h (cygwin_getinfo_types): Ditto. > * exception.h (cygwin_exception): Add exception_record accessor.
> diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc
> index 5fac4bb..3c6bab2 100644
> --- a/winsup/cygwin/external.cc
> +++ b/winsup/cygwin/external.cc
> @@ -27,6 +27,7 @@ details. */
> #include "environ.h"
> #include "cygserver_setpwd.h"
> #include "pwdgrp.h"
> +#include "exception.h"
> #include <unistd.h>
> #include <stdlib.h>
> #include <wchar.h>
> @@ -688,6 +689,18 @@ cygwin_internal (cygwin_getinfo_types t, ...)
> res = 0;
> break;
>
> + case CW_EXCEPTION_RECORD_FROM_SIGINFO_T:
> + {
> + siginfo_t *si = va_arg(arg, siginfo_t *);
> + res = 0;
> + if (si && si->si_cyg)
> + {
> + EXCEPTION_RECORD *er = ((cygwin_exception
> *)si->si_cyg)->exception_record();
> + res = (uintptr_t)er;
> + }
> + }
> + break;
I would prefer if CW_EXCEPTION_RECORD_FROM_SIGINFO_T takes a buffer
address as additional parameter and then memcpy's the EXCEPTION_RECORD
over to this address. This decouples the EXCEPTION_RECORDs in Cygwin
from the one in the application and no side is huffy if the other side
changes the contents.
> diff --git a/winsup/cygwin/include/sys/cygwin.h
> b/winsup/cygwin/include/sys/cygwin.h
> index edfcc56..13f9866 100644
> --- a/winsup/cygwin/include/sys/cygwin.h
> +++ b/winsup/cygwin/include/sys/cygwin.h
> @@ -1,3 +1,4 @@
> +
> /* sys/cygwin.h
>
> Copyright 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
> 2008,
> @@ -153,7 +154,8 @@ typedef enum
> CW_CYGNAME_FROM_WINNAME,
> CW_FIXED_ATEXIT,
> CW_GETNSS_PWD_SRC,
> - CW_GETNSS_GRP_SRC
> + CW_GETNSS_GRP_SRC,
> + CW_EXCEPTION_RECORD_FROM_SIGINFO_T,
> } cygwin_getinfo_types;
>
> #define CW_LOCK_PINFO CW_LOCK_PINFO
There's a
#define CW_EXCEPTION_RECORD_FROM_SIGINFO_T CW_EXCEPTION_RECORD_FROM_SIGINFO_T
missing here. With these changes, ok to apply.
Thanks,
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
pgp7HjTvfGvzf.pgp
Description: PGP signature
