Add cygwin_internal() operation to retrieve the EXCEPTION_RECORD from a siginfo_t *
* external.cc (cygwin_internal): Add operation to retrieve a copy of the EXCEPTION_RECORD from a siginfo_t *. * include/sys/cygwin.h (cygwin_getinfo_types): Ditto. * exception.h (cygwin_exception): Add exception_record accessor. Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
This commit is contained in:
@@ -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,19 @@ cygwin_internal (cygwin_getinfo_types t, ...)
|
||||
res = 0;
|
||||
break;
|
||||
|
||||
case CW_EXCEPTION_RECORD_FROM_SIGINFO_T:
|
||||
{
|
||||
siginfo_t *si = va_arg(arg, siginfo_t *);
|
||||
EXCEPTION_RECORD *er = va_arg(arg, EXCEPTION_RECORD *);
|
||||
if (si && si->si_cyg && er)
|
||||
{
|
||||
memcpy(er, ((cygwin_exception *)si->si_cyg)->exception_record(),
|
||||
sizeof(EXCEPTION_RECORD));
|
||||
res = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
set_errno (ENOSYS);
|
||||
}
|
||||
|
Reference in New Issue
Block a user