* dcrt0.cc (__cygwin_user_data): Initialize.
(dll_crt0_1): Eliminate user_data initialization. (dll_crt0): Set up impure_ptr_ptr for older executables. (cygwin_dll_init): Eliminate user_data initializations. (__api_fatal): Don't check for user_data initialization. * dll_init.cc (struct dll): Store entire contents of per_process rather than just a pointer. (add): Ditto. (initOneDll): Don't check for user_data initialization. (DllList::recordDll): Store contents of per_process argument. (DllList::detachDll): Pass address of per_process field. (DllList::initAll): Ditto. (DllList::doGlobalDestructorsOfDlls): Ditto. (DllListIterator::operator *): Ditto. (dll_dllcrt0): Default to __cygwin_user_data if arg is NULL. * include/sys/cygwin.h: Reorganize per_process to eliminate obsolete fields and accomodate new way of initializing. * lib/_cygwin_crt0_common: Initialize _impure_ptr from __cygwin_user_data.impure_ptr.
This commit is contained in:
		@@ -48,7 +48,7 @@ _cygwin_crt0_common (MainFunc f)
 | 
			
		||||
  __cygwin_user_data.ctors = &__CTOR_LIST__;
 | 
			
		||||
  __cygwin_user_data.dtors = &__DTOR_LIST__;
 | 
			
		||||
  __cygwin_user_data.envptr = &environ;
 | 
			
		||||
  __cygwin_user_data.impure_ptr_ptr = &_impure_ptr;
 | 
			
		||||
  _impure_ptr = __cygwin_user_data.impure_ptr;
 | 
			
		||||
  __cygwin_user_data.main = f;
 | 
			
		||||
  __cygwin_user_data.premain[0] = cygwin_premain0;
 | 
			
		||||
  __cygwin_user_data.premain[1] = cygwin_premain1;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user