Cygwin: add header defining GCC exception codes

Include it in exceptions.cc instead of defining the exception codes
there.
This commit is contained in:
Ken Brown 2020-08-20 10:35:43 -04:00
parent 74cf7dabcb
commit 14c0a4c67d
2 changed files with 20 additions and 9 deletions

View File

@ -28,6 +28,7 @@ details. */
#include "ntdll.h" #include "ntdll.h"
#include "exception.h" #include "exception.h"
#include "posix_timer.h" #include "posix_timer.h"
#include "gcc_seh.h"
/* Definitions for code simplification */ /* Definitions for code simplification */
#ifdef __x86_64__ #ifdef __x86_64__
@ -763,15 +764,6 @@ exception::handle (EXCEPTION_RECORD *e, exception_list *frame, CONTEXT *in,
return ExceptionContinueExecution; return ExceptionContinueExecution;
#ifdef __x86_64__ #ifdef __x86_64__
/* From the GCC source file libgcc/unwind-seh.c. */
#define STATUS_USER_DEFINED (1U << 29)
#define GCC_MAGIC (('G' << 16) | ('C' << 8) | 'C')
#define GCC_EXCEPTION(TYPE) \
(STATUS_USER_DEFINED | ((TYPE) << 24) | GCC_MAGIC)
#define STATUS_GCC_THROW GCC_EXCEPTION (0)
#define STATUS_GCC_UNWIND GCC_EXCEPTION (1)
#define STATUS_GCC_FORCED GCC_EXCEPTION (2)
case STATUS_GCC_THROW: case STATUS_GCC_THROW:
case STATUS_GCC_UNWIND: case STATUS_GCC_UNWIND:
case STATUS_GCC_FORCED: case STATUS_GCC_FORCED:

19
winsup/cygwin/gcc_seh.h Normal file
View File

@ -0,0 +1,19 @@
/* gcc_seh.h: GCC exception codes.
This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
details. */
#pragma once
/* From the GCC source file libgcc/unwind-seh.c. */
#ifdef __x86_64__
#define STATUS_USER_DEFINED (1U << 29)
#define GCC_MAGIC (('G' << 16) | ('C' << 8) | 'C')
#define GCC_EXCEPTION(TYPE) \
(STATUS_USER_DEFINED | ((TYPE) << 24) | GCC_MAGIC)
#define STATUS_GCC_THROW GCC_EXCEPTION (0)
#define STATUS_GCC_UNWIND GCC_EXCEPTION (1)
#define STATUS_GCC_FORCED GCC_EXCEPTION (2)
#endif