Rename struct ucontext to struct __mcontext

* include/cygwin/signal.h : Rename struct ucontext to struct
	__mcontext.  Fix layout differences from the Win32 API CONTEXT
	type.  Remove unused member _internal.  Rename member which
	corresponds to ContextFlags.  Add cr2 member.

Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
This commit is contained in:
Jon TURNEY 2015-03-30 18:05:51 +01:00 committed by Corinna Vinschen
parent 9b42474f29
commit 9afde4dff4
2 changed files with 26 additions and 9 deletions

View File

@ -1,3 +1,10 @@
2015-04-01 Jon TURNEY <jon.turney@dronecode.org.uk>
* include/cygwin/signal.h : Rename struct ucontext to struct
__mcontext. Fix layout differences from the Win32 API CONTEXT
type. Remove unused member _internal. Rename member which
corresponds to ContextFlags. Add cr2 member.
2015-04-01 Corinna Vinschen <corinna@vinschen.de>
* grp.cc (internal_getgroups): Handle negative domain index to avoid

View File

@ -18,6 +18,10 @@
extern "C" {
#endif
/*
Define a struct __mcontext, which should be identical in layout to the Win32
API type CONTEXT with the addition of oldmask and cr2 fields at the end.
*/
#ifdef __x86_64__
struct _uc_fpxreg {
@ -45,7 +49,7 @@ struct _fpstate
__uint32_t padding[24];
};
struct ucontext
struct __mcontext
{
__uint64_t p1home;
__uint64_t p2home;
@ -53,7 +57,7 @@ struct ucontext
__uint64_t p4home;
__uint64_t p5home;
__uint64_t p6home;
__uint32_t cr2;
__uint32_t ctxflags;
__uint32_t mxcsr;
__uint16_t cs;
__uint16_t ds;
@ -86,14 +90,15 @@ struct ucontext
__uint64_t r15;
__uint64_t rip;
struct _fpstate fpregs;
__uint64_t vregs[52];
__uint64_t vcx;
__uint64_t dbc;
__uint64_t btr;
__uint64_t bfr;
__uint64_t etr;
__uint64_t efr;
__uint8_t _internal;
__uint64_t oldmask;
__uint64_t cr2;
};
#else /* !x86_64 */
@ -117,9 +122,9 @@ struct _fpstate
__uint32_t nxst;
};
struct ucontext
struct __mcontext
{
__uint32_t cr2;
__uint32_t ctxflags;
__uint32_t dr0;
__uint32_t dr1;
__uint32_t dr2;
@ -143,15 +148,20 @@ struct ucontext
__uint32_t eflags;
__uint32_t esp;
__uint32_t ss;
__uint8_t _internal;
__uint32_t reserved[128];
__uint32_t oldmask;
__uint32_t cr2;
};
#endif /* !x86_64 */
/* Needed for GDB. It only compiles in the context copy code if this
macro s defined. */
#define __COPY_CONTEXT_SIZE ((size_t) (uintptr_t) &((struct ucontext *) 0)->_internal)
/* Needed for GDB. It only compiles in the context copy code if this macro is
defined. This is not sizeof(CONTEXT) due to historical accidents. */
#ifdef __x86_64__
#define __COPY_CONTEXT_SIZE 816
#else
#define __COPY_CONTEXT_SIZE 204
#endif
typedef union sigval
{