aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2004-09-16 03:49:03 +0000
committerChristopher Faylor <me@cgf.cx>2004-09-16 03:49:03 +0000
commit22a1a24f10203d4a361cb6b1742d2b04f524e221 (patch)
tree9d0a715e2bdfd4cff5da512290a67cead977cd90
parent181cb05147a5590048f29f246f4b146e6f3b8112 (diff)
downloadnewlib-22a1a24f10203d4a361cb6b1742d2b04f524e221.zip
newlib-22a1a24f10203d4a361cb6b1742d2b04f524e221.tar.gz
newlib-22a1a24f10203d4a361cb6b1742d2b04f524e221.tar.bz2
* 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.
-rw-r--r--winsup/cygwin/ChangeLog10
-rw-r--r--winsup/cygwin/cygwin.din2
-rw-r--r--winsup/cygwin/dcrt0.cc7
-rw-r--r--winsup/cygwin/lib/_cygwin_crt0_common.cc4
4 files changed, 17 insertions, 6 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index b02d817..54dcedc 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,13 @@
+2004-09-15 Corinna Vinschen <corinna@vinschen.de>
+
+ * 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 <cgf@timesys.com>
* cygtls.h: Add alignment kludge to fix disparity between compilers.
diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din
index a849f41..bf39f4b 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 2ab6eb6..4ad5968 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 f1e7248..935b84f 100644
--- a/winsup/cygwin/lib/_cygwin_crt0_common.cc
+++ b/winsup/cygwin/lib/_cygwin_crt0_common.cc
@@ -15,6 +15,9 @@ details. */
#include <reent.h>
#include <stdlib.h>
+/* 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 ();