From a9f36d288c287f691f9a21fb9d747f45673236cf Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Tue, 14 Sep 2004 23:44:50 +0000 Subject: * cygtls.h: Add alignment kludge to fix disparity between compilers. * tlsoffsets.h: Regenerate. * fork.cc (slow_pid_reuse): Use define to control number of pids held to prevent pid reuse. --- winsup/cygwin/ChangeLog | 8 ++++ winsup/cygwin/cygtls.h | 8 +++- winsup/cygwin/fork.cc | 4 +- winsup/cygwin/tlsoffsets.h | 110 +++++++++++++++++++++++---------------------- 4 files changed, 75 insertions(+), 55 deletions(-) (limited to 'winsup') diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index c7f69e242..b02d817f8 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,11 @@ +2004-09-14 Christopher Faylor + + * cygtls.h: Add alignment kludge to fix disparity between compilers. + * tlsoffsets.h: Regenerate. + + * fork.cc (slow_pid_reuse): Use define to control number of pids held + to prevent pid reuse. + 2004-09-14 Sam Steingold * autoload.cc (EnumProcessModules): Add. diff --git a/winsup/cygwin/cygtls.h b/winsup/cygwin/cygtls.h index 997518654..2ce91dbc8 100644 --- a/winsup/cygwin/cygtls.h +++ b/winsup/cygwin/cygtls.h @@ -98,6 +98,8 @@ typedef struct struct_waitq /* Changes to the below structure may require acompanying changes to the very simple parser in the perl script 'gentls_offsets' (<<-- start parsing here). + The union in this structure is used to force alignment between the version + of the compiler used to generate tlsoffsets.h and the cygwin cross compiler. */ typedef __uint32_t __stack_t; @@ -117,7 +119,11 @@ struct _cygtls unsigned threadkill; siginfo_t infodata; struct pthread *tid; - struct _reent local_clib; + union + { + struct _reent local_clib; + char __dontuse[8 * ((sizeof(struct _reent) + 4) / 8)]; + }; struct _local_storage locals; waitq wq; struct _cygtls *prev, *next; diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc index c65c22d39..08edff220 100644 --- a/winsup/cygwin/fork.cc +++ b/winsup/cygwin/fork.cc @@ -31,6 +31,8 @@ details. */ #include "cygmalloc.h" #include "cygthread.h" +#define NPIDS_HELD 8 + /* Timeout to wait for child to start, parent to init child, etc. */ /* FIXME: Once things stabilize, bump up to a few minutes. */ #define FORK_WAIT_TIMEOUT (300 * 1000) /* 300 seconds */ @@ -321,7 +323,7 @@ fork_child (HANDLE& hParent, dll *&first_dll, bool& load_dlls) static void slow_pid_reuse (HANDLE h) { - static NO_COPY HANDLE last_fork_procs[8] = {0}; + static NO_COPY HANDLE last_fork_procs[NPIDS_HELD] = {0}; static NO_COPY unsigned nfork_procs = 0; if (nfork_procs >= (sizeof (last_fork_procs) / sizeof (last_fork_procs [0]))) diff --git a/winsup/cygwin/tlsoffsets.h b/winsup/cygwin/tlsoffsets.h index 24ac52af5..271ed367e 100644 --- a/winsup/cygwin/tlsoffsets.h +++ b/winsup/cygwin/tlsoffsets.h @@ -1,109 +1,113 @@ //;# autogenerated: Do not edit. -//; $tls::sizeof__cygtls = 3776; -//; $tls::func = -3776; +//; $tls::sizeof__cygtls = 3912; +//; $tls::func = -3912; //; $tls::pfunc = 0; -//; $tls::saved_errno = -3772; +//; $tls::saved_errno = -3908; //; $tls::psaved_errno = 4; -//; $tls::sa_flags = -3768; +//; $tls::sa_flags = -3904; //; $tls::psa_flags = 8; -//; $tls::oldmask = -3764; +//; $tls::oldmask = -3900; //; $tls::poldmask = 12; -//; $tls::deltamask = -3760; +//; $tls::deltamask = -3896; //; $tls::pdeltamask = 16; -//; $tls::event = -3756; +//; $tls::event = -3892; //; $tls::pevent = 20; -//; $tls::errno_addr = -3752; +//; $tls::errno_addr = -3888; //; $tls::perrno_addr = 24; -//; $tls::initialized = -3748; +//; $tls::initialized = -3884; //; $tls::pinitialized = 28; -//; $tls::sigmask = -3744; +//; $tls::sigmask = -3880; //; $tls::psigmask = 32; -//; $tls::sigwait_mask = -3740; +//; $tls::sigwait_mask = -3876; //; $tls::psigwait_mask = 36; -//; $tls::sigwait_info = -3736; +//; $tls::sigwait_info = -3872; //; $tls::psigwait_info = 40; -//; $tls::threadkill = -3732; +//; $tls::threadkill = -3868; //; $tls::pthreadkill = 44; -//; $tls::infodata = -3728; +//; $tls::infodata = -3864; //; $tls::pinfodata = 48; -//; $tls::tid = -3580; +//; $tls::tid = -3716; //; $tls::ptid = 196; -//; $tls::local_clib = -3576; +//; $tls::local_clib = -3712; //; $tls::plocal_clib = 200; +//; $tls::__dontuse = -3712; +//; $tls::p__dontuse = 200; //; $tls::locals = -2648; -//; $tls::plocals = 1128; +//; $tls::plocals = 1264; //; $tls::wq = -1080; -//; $tls::pwq = 2696; +//; $tls::pwq = 2832; //; $tls::prev = -1052; -//; $tls::pprev = 2724; +//; $tls::pprev = 2860; //; $tls::next = -1048; -//; $tls::pnext = 2728; +//; $tls::pnext = 2864; //; $tls::stackptr = -1044; -//; $tls::pstackptr = 2732; +//; $tls::pstackptr = 2868; //; $tls::sig = -1040; -//; $tls::psig = 2736; +//; $tls::psig = 2872; //; $tls::incyg = -1036; -//; $tls::pincyg = 2740; +//; $tls::pincyg = 2876; //; $tls::spinning = -1032; -//; $tls::pspinning = 2744; +//; $tls::pspinning = 2880; //; $tls::stacklock = -1028; -//; $tls::pstacklock = 2748; +//; $tls::pstacklock = 2884; //; $tls::stack = -1024; -//; $tls::pstack = 2752; +//; $tls::pstack = 2888; //; $tls::padding = 0; -//; $tls::ppadding = 3776; +//; $tls::ppadding = 3912; //; __DATA__ -#define tls_func (-3776) +#define tls_func (-3912) #define tls_pfunc (0) -#define tls_saved_errno (-3772) +#define tls_saved_errno (-3908) #define tls_psaved_errno (4) -#define tls_sa_flags (-3768) +#define tls_sa_flags (-3904) #define tls_psa_flags (8) -#define tls_oldmask (-3764) +#define tls_oldmask (-3900) #define tls_poldmask (12) -#define tls_deltamask (-3760) +#define tls_deltamask (-3896) #define tls_pdeltamask (16) -#define tls_event (-3756) +#define tls_event (-3892) #define tls_pevent (20) -#define tls_errno_addr (-3752) +#define tls_errno_addr (-3888) #define tls_perrno_addr (24) -#define tls_initialized (-3748) +#define tls_initialized (-3884) #define tls_pinitialized (28) -#define tls_sigmask (-3744) +#define tls_sigmask (-3880) #define tls_psigmask (32) -#define tls_sigwait_mask (-3740) +#define tls_sigwait_mask (-3876) #define tls_psigwait_mask (36) -#define tls_sigwait_info (-3736) +#define tls_sigwait_info (-3872) #define tls_psigwait_info (40) -#define tls_threadkill (-3732) +#define tls_threadkill (-3868) #define tls_pthreadkill (44) -#define tls_infodata (-3728) +#define tls_infodata (-3864) #define tls_pinfodata (48) -#define tls_tid (-3580) +#define tls_tid (-3716) #define tls_ptid (196) -#define tls_local_clib (-3576) +#define tls_local_clib (-3712) #define tls_plocal_clib (200) +#define tls___dontuse (-3712) +#define tls_p__dontuse (200) #define tls_locals (-2648) -#define tls_plocals (1128) +#define tls_plocals (1264) #define tls_wq (-1080) -#define tls_pwq (2696) +#define tls_pwq (2832) #define tls_prev (-1052) -#define tls_pprev (2724) +#define tls_pprev (2860) #define tls_next (-1048) -#define tls_pnext (2728) +#define tls_pnext (2864) #define tls_stackptr (-1044) -#define tls_pstackptr (2732) +#define tls_pstackptr (2868) #define tls_sig (-1040) -#define tls_psig (2736) +#define tls_psig (2872) #define tls_incyg (-1036) -#define tls_pincyg (2740) +#define tls_pincyg (2876) #define tls_spinning (-1032) -#define tls_pspinning (2744) +#define tls_pspinning (2880) #define tls_stacklock (-1028) -#define tls_pstacklock (2748) +#define tls_pstacklock (2884) #define tls_stack (-1024) -#define tls_pstack (2752) +#define tls_pstack (2888) #define tls_padding (0) -#define tls_ppadding (3776) +#define tls_ppadding (3912) -- cgit v1.2.3