From 93374181cba2a6e3e49adacaaa4a37c0e31e97a2 Mon Sep 17 00:00:00 2001 From: Jon Turney Date: Sun, 11 Sep 2016 13:37:54 +0100 Subject: [PATCH] Fix SetThreadName with gdb 7.10 on x86 Additionally to eccefd97, we need to ensure the exception handler is installed for the _ljfault used to implement _try/_except to get called. Also use the correct macro for x86 conditional compilation. Addresses https://cygwin.com/ml/cygwin/2016-09/msg00143.html Signed-off-by: Jon Turney --- winsup/cygwin/miscfuncs.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc index fbd024fea..f90d6efa2 100644 --- a/winsup/cygwin/miscfuncs.cc +++ b/winsup/cygwin/miscfuncs.cc @@ -1129,11 +1129,18 @@ SetThreadName(DWORD dwThreadID, const char* threadName) 0x1000, /* type, must be 0x1000 */ (ULONG_PTR) threadName, /* pointer to threadname */ dwThreadID, /* thread ID (+ flags on x86_64) */ -#ifdef __X86__ +#ifdef _X86_ 0, /* flags, must be zero */ #endif }; +#ifdef _X86_ + /* On x86, for __try/__except to work, we must ensure our exception handler is + installed, which may not be the case if this is being called during early + initialization. */ + exception protect; +#endif + __try { RaiseException (MS_VC_EXCEPTION, 0, sizeof (info) / sizeof (ULONG_PTR),