From 22a1a24f10203d4a361cb6b1742d2b04f524e221 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 16 Sep 2004 03:49:03 +0000 Subject: [PATCH] * cygwin.din (_impure_ptr): Export. (reent_data): Don't export. * dcrt0.cc (reent_data): Drop. (__cygwin_user_data): Initialize impure_ptr as GLOBAL_REENT. (_dll_crt0): Initialize _impure_ptr as GLOBAL_REENT. * lib/_cygwin_crt0_common.cc (_impure_ptr): Drop. Declare extern as dllimport instead. --- winsup/cygwin/ChangeLog | 10 ++++++++++ winsup/cygwin/cygwin.din | 2 +- winsup/cygwin/dcrt0.cc | 7 +++---- winsup/cygwin/lib/_cygwin_crt0_common.cc | 4 +++- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index b02d817f8..54dcedca6 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,13 @@ +2004-09-15 Corinna Vinschen + + * cygwin.din (_impure_ptr): Export. + (reent_data): Don't export. + * dcrt0.cc (reent_data): Drop. + (__cygwin_user_data): Initialize impure_ptr as GLOBAL_REENT. + (_dll_crt0): Initialize _impure_ptr as GLOBAL_REENT. + * lib/_cygwin_crt0_common.cc (_impure_ptr): Drop. Declare extern as + dllimport instead. + 2004-09-14 Christopher Faylor * cygtls.h: Add alignment kludge to fix disparity between compilers. diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index a849f41b1..bf39f4b22 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -12,6 +12,7 @@ __rcmd_errstr DATA _check_for_executable DATA _ctype_ DATA _daylight DATA +_impure_ptr DATA _sys_errlist DATA sys_errlist = _sys_errlist DATA _sys_nerr DATA @@ -24,7 +25,6 @@ opterr DATA optind DATA optopt DATA optreset DATA -reent_data DATA _alloca NOSIGFE dll_entry@12 NOSIGFE __assert SIGFE diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index 2ab6eb610..4ad5968ed 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -98,7 +98,6 @@ extern "C" char ***main_environ; /* __progname used in getopt error message */ char *__progname; - struct _reent reent_data; struct per_process __cygwin_user_data = {/* initial_sp */ 0, /* magic_biscuit */ 0, /* dll_major */ CYGWIN_VERSION_DLL_MAJOR, @@ -119,7 +118,7 @@ extern "C" /* api_minor */ CYGWIN_VERSION_API_MINOR, /* unused2 */ {0, 0, 0, 0, 0}, /* resourcelocks */ &_reslock, /* threadinterface */ &_mtinterf, - /* impure_ptr */ &reent_data, + /* impure_ptr */ _GLOBAL_REENT, }; bool ignore_case_with_glob; int __declspec (dllexport) _check_for_executable = true; @@ -925,7 +924,7 @@ _dll_crt0 () *main_environ = NULL; char padding[CYGTLS_PADSIZE]; - _impure_ptr = &reent_data; + _impure_ptr = _GLOBAL_REENT; _impure_ptr->_stdin = &_impure_ptr->__sf[0]; _impure_ptr->_stdout = &_impure_ptr->__sf[1]; _impure_ptr->_stderr = &_impure_ptr->__sf[2]; @@ -947,7 +946,7 @@ dll_crt0 (per_process *uptr) if (uptr && uptr != user_data) { memcpy (user_data, uptr, per_process_overwrite); - *(user_data->impure_ptr_ptr) = &reent_data; + *(user_data->impure_ptr_ptr) = _GLOBAL_REENT; } _dll_crt0 (); } diff --git a/winsup/cygwin/lib/_cygwin_crt0_common.cc b/winsup/cygwin/lib/_cygwin_crt0_common.cc index f1e724823..935b84f31 100644 --- a/winsup/cygwin/lib/_cygwin_crt0_common.cc +++ b/winsup/cygwin/lib/_cygwin_crt0_common.cc @@ -15,6 +15,9 @@ details. */ #include #include +/* Avoid an info message from linker when linking applications. */ +extern __declspec(dllimport) struct _reent *_impure_ptr; + #undef environ extern "C" @@ -23,7 +26,6 @@ char **environ; int cygwin_attach_dll (HMODULE, MainFunc); int cygwin_attach_noncygwin_dll (HMODULE, MainFunc); int main (int, char **, char **); -struct _reent *_impure_ptr; int _fmode; void _pei386_runtime_relocator ();