From f153e6b2804f06315d748bd1c8cad9f76798db09 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sat, 3 Dec 2005 04:23:35 +0000 Subject: * cygtls.h (_cygtls::el): New field. (_cygtls::handle_exceptions): New function declaration. (_cygtls::handle_threadlist_exception): Ditto. (_cygtls::init_exception_handler): Ditto. (_cygtls::init_threadlist_exceptions): Remove arg from declaration. * cygtls.cc (_cygtls::call2): Don't initialize exceptions here. (_cygtls::init_thread): Do it here instead and use member function. (_cygtls::handle_threadlist_exception): Move into _cygtls class. (_cygtls::init_exception_handler): Ditto. Rely on existence of 'el' memmber in _cygtls. (_cygtls::init_threadlist_exceptions): Ditto. * dcrt0.cc (dll_crt0_1): Remove exception_list definition and setting since it now commonly resides in the tls. * exceptions.cc (init_exception_handler): Move to cygtls.cc. (init_exceptions): Ditto. (rtl_unwind): New, safe wrapper function for RtlUnwind. (_cygtls::handle_exceptions): Move to _cygtls. Call rtl_unwind to unwind frames and eliminate copying of structures. Put address of failing instruction in si_addr, not the address on the stack. Return 0 to indicate that we've handled this exception. * external.cc (cygwin_internal): Make CW_INIT_EXCEPTIONS a no-op. * sigproc.cc (wait_sig): Accommodate argument change to _cygtls::init_threadlist_exceptions. * tlsoffsets.h: Regenerate. * include/exceptions.h (exception_list): Add more stuff to the exception list. Apparently windows needs this? (init_exceptions): Remove bogus declaration. * include/cygwin/signal.h (SI_USER): Redefine as zero as per SUSv3. * thread.cc (pthread_kill): Set si_pid and si_uid. * timer.cc (timer_thread): Set si_code to SI_TIMER. --- winsup/cygwin/include/cygwin/signal.h | 4 ++-- winsup/cygwin/include/cygwin/version.h | 4 +++- winsup/cygwin/include/exceptions.h | 6 +----- 3 files changed, 6 insertions(+), 8 deletions(-) (limited to 'winsup/cygwin/include') diff --git a/winsup/cygwin/include/cygwin/signal.h b/winsup/cygwin/include/cygwin/signal.h index 477903ac5..0ccdbc03f 100644 --- a/winsup/cygwin/include/cygwin/signal.h +++ b/winsup/cygwin/include/cygwin/signal.h @@ -102,8 +102,8 @@ typedef struct enum { - SI_USER = 1, /* sent by kill, raise, pthread_kill */ - SI_ASYNCIO, /* sent by AIO completion (currently + SI_USER = 0, /* sent by kill, raise, pthread_kill */ + SI_ASYNCIO = 2, /* sent by AIO completion (currently unimplemented) */ SI_MESGQ, /* sent by real time mesq state change (currently unimplemented) */ diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 7ea34fe2c..9511d925a 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -283,12 +283,14 @@ details. */ 143: Export clock_getres, clock_setres 144: Export timelocal, timegm. 145: Add MAP_NORESERVE flag to mmap. + 146: Change SI_USER definition. FIXME: Need to develop compatibility macro + for this? */ /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 145 +#define CYGWIN_VERSION_API_MINOR 146 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible diff --git a/winsup/cygwin/include/exceptions.h b/winsup/cygwin/include/exceptions.h index 462000d61..5311e1f9e 100644 --- a/winsup/cygwin/include/exceptions.h +++ b/winsup/cygwin/include/exceptions.h @@ -106,13 +106,9 @@ typedef struct _exception_list { struct _exception_list *prev; exception_handler *handler; - - /* We're apparently free to add more stuff here. - At present we don't need any. */ + unsigned long stuff[8]; } exception_list; -void init_exceptions (exception_list *); - #ifdef __cplusplus }; #endif /* __cplusplus */ -- cgit v1.2.3