From c433f4617f61b37cee9f8f91372d64e3cbd03c48 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Mon, 16 Jun 2003 03:24:13 +0000 Subject: [PATCH] Throughout, remove "include " from files which already include cygerrno.h. * include/cygwin/config.h (__DYNAMIC_REENT__): Define. * include/cygwin/version.h: Bump API minor version. * cygwin.din: Export __getreent * cygerrno.h: Include errno.h. Fix places where _impure_ptr is used directly to store the errno value. * debug.cc (__set_errno): Ditto. * errno.cc: Remove _RRENT_ONLY define to get errno.cc compiled. * signal.cc: Rename _reent_clib to _REENT throughout. * thread.h (reent_clib): Remove prototype. * thread.cc (reent_clib): Rename reent_clib to __getreent. Return _impure_ptr until MTinterface is initialized. (reent_winsup): Fix a possible SEGV when _r == NULL. Return NULL instead. * MTinterface::fixup_after_fork: Switch reent back to _impure_ptr to keep signal handling running when fork is called from a thread other than the mainthread. --- winsup/cygserver/client.cc | 1 - winsup/cygserver/cygserver.cc | 1 - winsup/cygserver/process.cc | 1 - winsup/cygserver/transport_pipes.cc | 1 - winsup/cygwin/ChangeLog | 24 +++++++++++++++ winsup/cygwin/cygerrno.h | 8 +++-- winsup/cygwin/cygheap.cc | 1 - winsup/cygwin/cygserver.cc | 1 - winsup/cygwin/cygserver_client.cc | 1 - winsup/cygwin/cygserver_process.cc | 1 - winsup/cygwin/cygserver_transport_pipes.cc | 1 - winsup/cygwin/cygthread.cc | 1 - winsup/cygwin/cygwin.din | 1 + winsup/cygwin/dcrt0.cc | 1 - winsup/cygwin/debug.cc | 3 +- winsup/cygwin/dir.cc | 1 - winsup/cygwin/dll_init.cc | 1 - winsup/cygwin/dtable.cc | 1 - winsup/cygwin/environ.cc | 1 - winsup/cygwin/errno.cc | 2 -- winsup/cygwin/exceptions.cc | 1 - winsup/cygwin/exec.cc | 1 - winsup/cygwin/external.cc | 1 - winsup/cygwin/fcntl.cc | 1 - winsup/cygwin/fhandler.cc | 1 - winsup/cygwin/fhandler_clipboard.cc | 1 - winsup/cygwin/fhandler_console.cc | 1 - winsup/cygwin/fhandler_disk_file.cc | 1 - winsup/cygwin/fhandler_dsp.cc | 1 - winsup/cygwin/fhandler_floppy.cc | 1 - winsup/cygwin/fhandler_mem.cc | 1 - winsup/cygwin/fhandler_proc.cc | 1 - winsup/cygwin/fhandler_process.cc | 1 - winsup/cygwin/fhandler_random.cc | 1 - winsup/cygwin/fhandler_raw.cc | 1 - winsup/cygwin/fhandler_registry.cc | 1 - winsup/cygwin/fhandler_serial.cc | 1 - winsup/cygwin/fhandler_socket.cc | 1 - winsup/cygwin/fhandler_tape.cc | 1 - winsup/cygwin/fhandler_termios.cc | 1 - winsup/cygwin/fhandler_tty.cc | 1 - winsup/cygwin/fhandler_virtual.cc | 1 - winsup/cygwin/fhandler_windows.cc | 1 - winsup/cygwin/fork.cc | 1 - winsup/cygwin/grp.cc | 1 - winsup/cygwin/heap.cc | 1 - winsup/cygwin/include/cygwin/config.h | 1 + winsup/cygwin/include/cygwin/version.h | 3 +- winsup/cygwin/ioctl.cc | 1 - winsup/cygwin/malloc_wrapper.cc | 1 - winsup/cygwin/mmap.cc | 1 - winsup/cygwin/msg.cc | 1 - winsup/cygwin/net.cc | 1 - winsup/cygwin/passwd.cc | 1 - winsup/cygwin/path.cc | 1 - winsup/cygwin/pinfo.cc | 1 - winsup/cygwin/pipe.cc | 1 - winsup/cygwin/poll.cc | 1 - winsup/cygwin/resource.cc | 1 - winsup/cygwin/scandir.cc | 1 - winsup/cygwin/sched.cc | 1 - winsup/cygwin/sec_acl.cc | 1 - winsup/cygwin/sec_helper.cc | 1 - winsup/cygwin/security.cc | 1 - winsup/cygwin/select.cc | 1 - winsup/cygwin/sem.cc | 1 - winsup/cygwin/shared.cc | 1 - winsup/cygwin/shm.cc | 1 - winsup/cygwin/signal.cc | 5 ++-- winsup/cygwin/sigproc.cc | 1 - winsup/cygwin/spawn.cc | 1 - winsup/cygwin/strace.cc | 1 - winsup/cygwin/syscalls.cc | 1 - winsup/cygwin/sysconf.cc | 1 - winsup/cygwin/syslog.cc | 1 - winsup/cygwin/termios.cc | 1 - winsup/cygwin/thread.cc | 35 ++++++++++++++++++---- winsup/cygwin/thread.h | 1 - winsup/cygwin/times.cc | 1 - winsup/cygwin/tty.cc | 1 - winsup/cygwin/uinfo.cc | 1 - winsup/cygwin/wait.cc | 1 - winsup/cygwin/window.cc | 1 - 83 files changed, 65 insertions(+), 91 deletions(-) diff --git a/winsup/cygserver/client.cc b/winsup/cygserver/client.cc index 138c9ddc0..f6683182d 100644 --- a/winsup/cygserver/client.cc +++ b/winsup/cygserver/client.cc @@ -18,7 +18,6 @@ details. */ #endif #include -#include #include #include diff --git a/winsup/cygserver/cygserver.cc b/winsup/cygserver/cygserver.cc index 0c0740379..137730f9e 100644 --- a/winsup/cygserver/cygserver.cc +++ b/winsup/cygserver/cygserver.cc @@ -16,7 +16,6 @@ details. */ #include #include -#include #include #include #include diff --git a/winsup/cygserver/process.cc b/winsup/cygserver/process.cc index 7118bbcd9..2cc7be19c 100644 --- a/winsup/cygserver/process.cc +++ b/winsup/cygserver/process.cc @@ -15,7 +15,6 @@ details. */ #include #include -#include #include #include "cygerrno.h" diff --git a/winsup/cygserver/transport_pipes.cc b/winsup/cygserver/transport_pipes.cc index 495d804b0..6d80defd4 100644 --- a/winsup/cygserver/transport_pipes.cc +++ b/winsup/cygserver/transport_pipes.cc @@ -20,7 +20,6 @@ details. */ #include #include -#include #include #include #include diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 94c5b064e..441da04e5 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,27 @@ +2003-06-15 Christopher Faylor + + Throughout, remove "include " from files which already include + cygerrno.h. + +2003-06-15 Thomas Pfaff + + * include/cygwin/config.h (__DYNAMIC_REENT__): Define. + * include/cygwin/version.h: Bump API minor version. + * cygwin.din: Export __getreent + * cygerrno.h: Include errno.h. Fix places where _impure_ptr is used + directly to store the errno value. + * debug.cc (__set_errno): Ditto. + * errno.cc: Remove _RRENT_ONLY define to get errno.cc compiled. + * signal.cc: Rename _reent_clib to _REENT throughout. + * thread.h (reent_clib): Remove prototype. + * thread.cc (reent_clib): Rename reent_clib to __getreent. Return + _impure_ptr until MTinterface is initialized. + (reent_winsup): Fix a possible SEGV when _r == NULL. Return NULL + instead. + * MTinterface::fixup_after_fork: Switch reent back to _impure_ptr to + keep signal handling running when fork is called from a thread other + than the mainthread. + 2003-06-12 Thomas Pfaff * thread.cc (pthread_attr_init): Revert change from 2003-06-11 diff --git a/winsup/cygwin/cygerrno.h b/winsup/cygwin/cygerrno.h index 0c1513f25..fb00f3f1d 100644 --- a/winsup/cygwin/cygerrno.h +++ b/winsup/cygwin/cygerrno.h @@ -1,6 +1,6 @@ /* cygerrno.h: main Cygwin header file. - Copyright 2000 Red Hat, Inc. + Copyright 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. @@ -8,6 +8,8 @@ This software is a copyrighted work licensed under the terms of the Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ +#include + void __stdcall seterrno_from_win_error (const char *file, int line, DWORD code) __attribute__ ((regparm(3))); void __stdcall seterrno (const char *, int line) __attribute__ ((regparm(2))); int __stdcall geterrno_from_win_error (DWORD code, int deferrno) __attribute__ ((regparm(2))); @@ -16,12 +18,12 @@ int __stdcall geterrno_from_win_error (DWORD code, int deferrno) __attribute__ ( #define __seterrno_from_win_error(val) seterrno_from_win_error (__FILE__, __LINE__, val) #ifndef DEBUGGING -#define set_errno(val) (_impure_ptr->_errno = (val)) +#define set_errno(val) (errno = (val)) #else int __stdcall __set_errno (const char *ln, int ln, int val) __attribute ((regparm(3))); #define set_errno(val) __set_errno (__PRETTY_FUNCTION__, __LINE__, (val)) #endif -#define get_errno() (_impure_ptr->_errno) +#define get_errno() (errno) extern "C" void __stdcall set_sig_errno (int e); class save_errno diff --git a/winsup/cygwin/cygheap.cc b/winsup/cygwin/cygheap.cc index 1b4096a6f..aa213cc45 100644 --- a/winsup/cygwin/cygheap.cc +++ b/winsup/cygwin/cygheap.cc @@ -10,7 +10,6 @@ #include "winsup.h" #include -#include #include #include #include "security.h" diff --git a/winsup/cygwin/cygserver.cc b/winsup/cygwin/cygserver.cc index 0c0740379..137730f9e 100755 --- a/winsup/cygwin/cygserver.cc +++ b/winsup/cygwin/cygserver.cc @@ -16,7 +16,6 @@ details. */ #include #include -#include #include #include #include diff --git a/winsup/cygwin/cygserver_client.cc b/winsup/cygwin/cygserver_client.cc index 138c9ddc0..f6683182d 100755 --- a/winsup/cygwin/cygserver_client.cc +++ b/winsup/cygwin/cygserver_client.cc @@ -18,7 +18,6 @@ details. */ #endif #include -#include #include #include diff --git a/winsup/cygwin/cygserver_process.cc b/winsup/cygwin/cygserver_process.cc index 7118bbcd9..2cc7be19c 100755 --- a/winsup/cygwin/cygserver_process.cc +++ b/winsup/cygwin/cygserver_process.cc @@ -15,7 +15,6 @@ details. */ #include #include -#include #include #include "cygerrno.h" diff --git a/winsup/cygwin/cygserver_transport_pipes.cc b/winsup/cygwin/cygserver_transport_pipes.cc index 495d804b0..6d80defd4 100755 --- a/winsup/cygwin/cygserver_transport_pipes.cc +++ b/winsup/cygwin/cygserver_transport_pipes.cc @@ -20,7 +20,6 @@ details. */ #include #include -#include #include #include #include diff --git a/winsup/cygwin/cygthread.cc b/winsup/cygwin/cygthread.cc index 2d45f2917..c4c871cf7 100644 --- a/winsup/cygwin/cygthread.cc +++ b/winsup/cygwin/cygthread.cc @@ -9,7 +9,6 @@ details. */ #include "winsup.h" #include #include -#include #include "exceptions.h" #include "security.h" #include "cygthread.h" diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index 4deddb84f..336d46941 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -26,6 +26,7 @@ __eprintf __errno __fpclassifyd __fpclassifyf +__getreent __infinity __main __signbitd diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index a11b34277..34141c517 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -17,7 +17,6 @@ details. */ #include #include #include -#include #include "sigproc.h" #include "pinfo.h" #include "cygerrno.h" diff --git a/winsup/cygwin/debug.cc b/winsup/cygwin/debug.cc index 3513a6734..962878471 100644 --- a/winsup/cygwin/debug.cc +++ b/winsup/cygwin/debug.cc @@ -15,7 +15,6 @@ details. */ #include "security.h" #include "cygerrno.h" #ifdef DEBUGGING -#include #include "fhandler.h" #include "path.h" #include "dtable.h" @@ -222,6 +221,6 @@ int __stdcall __set_errno (const char *func, int ln, int val) { debug_printf ("%s:%d val %d", func, ln, val); - return _impure_ptr->_errno = val; + return errno = val; } #endif /*DEBUGGING*/ diff --git a/winsup/cygwin/dir.cc b/winsup/cygwin/dir.cc index 9c50bda1b..d5b8dc5e9 100644 --- a/winsup/cygwin/dir.cc +++ b/winsup/cygwin/dir.cc @@ -12,7 +12,6 @@ details. */ #include #include #include -#include #define _COMPILING_NEWLIB #include diff --git a/winsup/cygwin/dll_init.cc b/winsup/cygwin/dll_init.cc index 15d50b229..c5932f42c 100644 --- a/winsup/cygwin/dll_init.cc +++ b/winsup/cygwin/dll_init.cc @@ -8,7 +8,6 @@ details. */ #include "winsup.h" #include -#include #include "cygerrno.h" #include "perprocess.h" #include "dll_init.h" diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 3b114a729..315505b14 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -11,7 +11,6 @@ details. */ #define __INSIDE_CYGWIN_NET__ #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/environ.cc b/winsup/cygwin/environ.cc index e4bbabc72..d476435b7 100644 --- a/winsup/cygwin/environ.cc +++ b/winsup/cygwin/environ.cc @@ -8,7 +8,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/errno.cc b/winsup/cygwin/errno.cc index 53aae6d4b..127eff9d3 100644 --- a/winsup/cygwin/errno.cc +++ b/winsup/cygwin/errno.cc @@ -12,9 +12,7 @@ details. */ #define sys_nerr FOOsys_nerr #define _sys_errlist FOO_sys_errlist #include "winsup.h" -#define _REENT_ONLY #include -#include #include "cygerrno.h" #include "thread.h" #undef _sys_nerr diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index a6020415e..3c8bf39c9 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -10,7 +10,6 @@ details. */ #include "winsup.h" #include -#include #include #include "exceptions.h" diff --git a/winsup/cygwin/exec.cc b/winsup/cygwin/exec.cc index f0288dc93..6c5253359 100644 --- a/winsup/cygwin/exec.cc +++ b/winsup/cygwin/exec.cc @@ -12,7 +12,6 @@ details. */ #include "winsup.h" #include #include -#include #include #include "perprocess.h" #include "security.h" diff --git a/winsup/cygwin/external.cc b/winsup/cygwin/external.cc index 3accc6300..0bca0e513 100644 --- a/winsup/cygwin/external.cc +++ b/winsup/cygwin/external.cc @@ -11,7 +11,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include "security.h" #include "fhandler.h" #include "sigproc.h" diff --git a/winsup/cygwin/fcntl.cc b/winsup/cygwin/fcntl.cc index f67f43f6c..d7055f4e1 100644 --- a/winsup/cygwin/fcntl.cc +++ b/winsup/cygwin/fcntl.cc @@ -10,7 +10,6 @@ details. */ #include "winsup.h" #include -#include #include #include "security.h" #include "fhandler.h" diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index 8142cfa27..69fd48a7b 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -9,7 +9,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/fhandler_clipboard.cc b/winsup/cygwin/fhandler_clipboard.cc index 616adf43e..23d97d81a 100644 --- a/winsup/cygwin/fhandler_clipboard.cc +++ b/winsup/cygwin/fhandler_clipboard.cc @@ -13,7 +13,6 @@ details. */ #include "winsup.h" #include #include -#include #include #include #include diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc index 26fa64d44..0d7015246 100644 --- a/winsup/cygwin/fhandler_console.cc +++ b/winsup/cygwin/fhandler_console.cc @@ -12,7 +12,6 @@ details. */ #include #include #include -#include #include #include #include diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index c9570b851..48778f4fc 100644 --- a/winsup/cygwin/fhandler_disk_file.cc +++ b/winsup/cygwin/fhandler_disk_file.cc @@ -9,7 +9,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/fhandler_dsp.cc b/winsup/cygwin/fhandler_dsp.cc index 2ca44e321..cda7ebe95 100644 --- a/winsup/cygwin/fhandler_dsp.cc +++ b/winsup/cygwin/fhandler_dsp.cc @@ -12,7 +12,6 @@ details. */ #include "winsup.h" #include -#include #include #include #include diff --git a/winsup/cygwin/fhandler_floppy.cc b/winsup/cygwin/fhandler_floppy.cc index 83d41ea07..be9798c7f 100644 --- a/winsup/cygwin/fhandler_floppy.cc +++ b/winsup/cygwin/fhandler_floppy.cc @@ -11,7 +11,6 @@ details. */ #include "winsup.h" #include -#include #include #include #include diff --git a/winsup/cygwin/fhandler_mem.cc b/winsup/cygwin/fhandler_mem.cc index ea6fb4351..c57ff491d 100644 --- a/winsup/cygwin/fhandler_mem.cc +++ b/winsup/cygwin/fhandler_mem.cc @@ -9,7 +9,6 @@ details. */ #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/fhandler_proc.cc b/winsup/cygwin/fhandler_proc.cc index f9b866d83..286a8a23f 100644 --- a/winsup/cygwin/fhandler_proc.cc +++ b/winsup/cygwin/fhandler_proc.cc @@ -11,7 +11,6 @@ details. */ #define _WIN32_WINNT 0x0501 #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/fhandler_process.cc b/winsup/cygwin/fhandler_process.cc index f8631b41a..0d26d2cb6 100644 --- a/winsup/cygwin/fhandler_process.cc +++ b/winsup/cygwin/fhandler_process.cc @@ -9,7 +9,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/fhandler_random.cc b/winsup/cygwin/fhandler_random.cc index 50693162e..e7c694f5a 100644 --- a/winsup/cygwin/fhandler_random.cc +++ b/winsup/cygwin/fhandler_random.cc @@ -11,7 +11,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include #include "cygerrno.h" #include "security.h" diff --git a/winsup/cygwin/fhandler_raw.cc b/winsup/cygwin/fhandler_raw.cc index 45ce414dc..ebd8ef0cc 100644 --- a/winsup/cygwin/fhandler_raw.cc +++ b/winsup/cygwin/fhandler_raw.cc @@ -10,7 +10,6 @@ #include "winsup.h" #include -#include #include #include diff --git a/winsup/cygwin/fhandler_registry.cc b/winsup/cygwin/fhandler_registry.cc index 7f2cc5f02..85ea02fcb 100644 --- a/winsup/cygwin/fhandler_registry.cc +++ b/winsup/cygwin/fhandler_registry.cc @@ -11,7 +11,6 @@ details. */ /* FIXME: Access permissions are ignored at the moment. */ #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/fhandler_serial.cc b/winsup/cygwin/fhandler_serial.cc index 3c99b4a03..3bc92edc5 100644 --- a/winsup/cygwin/fhandler_serial.cc +++ b/winsup/cygwin/fhandler_serial.cc @@ -9,7 +9,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include #include #include "cygerrno.h" diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc index 3dd8d6762..18cc018f3 100644 --- a/winsup/cygwin/fhandler_socket.cc +++ b/winsup/cygwin/fhandler_socket.cc @@ -13,7 +13,6 @@ #define __INSIDE_CYGWIN_NET__ #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/fhandler_tape.cc b/winsup/cygwin/fhandler_tape.cc index c37aefce9..d6aceff0d 100644 --- a/winsup/cygwin/fhandler_tape.cc +++ b/winsup/cygwin/fhandler_tape.cc @@ -11,7 +11,6 @@ details. */ #include "winsup.h" #include -#include #include #include #include "cygerrno.h" diff --git a/winsup/cygwin/fhandler_termios.cc b/winsup/cygwin/fhandler_termios.cc index f28481185..49dbb3378 100644 --- a/winsup/cygwin/fhandler_termios.cc +++ b/winsup/cygwin/fhandler_termios.cc @@ -12,7 +12,6 @@ details. */ #include #include #include -#include #include #include "cygerrno.h" #include "security.h" diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index 6409090e9..cc60235e8 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -14,7 +14,6 @@ details. */ #include #include #include -#include #include #include #include "cygerrno.h" diff --git a/winsup/cygwin/fhandler_virtual.cc b/winsup/cygwin/fhandler_virtual.cc index a29e7e487..b5ecb54a5 100644 --- a/winsup/cygwin/fhandler_virtual.cc +++ b/winsup/cygwin/fhandler_virtual.cc @@ -9,7 +9,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/fhandler_windows.cc b/winsup/cygwin/fhandler_windows.cc index 9d3e07e55..b9892882f 100644 --- a/winsup/cygwin/fhandler_windows.cc +++ b/winsup/cygwin/fhandler_windows.cc @@ -12,7 +12,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include #include #include "cygerrno.h" diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc index 2435d95e3..184e56672 100644 --- a/winsup/cygwin/fork.cc +++ b/winsup/cygwin/fork.cc @@ -13,7 +13,6 @@ details. */ #include #include #include -#include #include "security.h" #include "fhandler.h" #include "path.h" diff --git a/winsup/cygwin/grp.cc b/winsup/cygwin/grp.cc index 73a2b89a5..19b7fe90f 100644 --- a/winsup/cygwin/grp.cc +++ b/winsup/cygwin/grp.cc @@ -16,7 +16,6 @@ details. */ #include #include #include -#include #include "pinfo.h" #include "security.h" #include "fhandler.h" diff --git a/winsup/cygwin/heap.cc b/winsup/cygwin/heap.cc index fb1e37c89..8e0a04e23 100644 --- a/winsup/cygwin/heap.cc +++ b/winsup/cygwin/heap.cc @@ -9,7 +9,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include "cygerrno.h" #include "sigproc.h" #include "pinfo.h" diff --git a/winsup/cygwin/include/cygwin/config.h b/winsup/cygwin/include/cygwin/config.h index 77815a071..e3e09f051 100644 --- a/winsup/cygwin/include/cygwin/config.h +++ b/winsup/cygwin/include/cygwin/config.h @@ -19,6 +19,7 @@ extern "C" { #endif #define _CYGWIN_CONFIG_H +#define __DYNAMIC_REENT__ #define __FILENAME_MAX__ (260 - 1 /* NUL */) #define _READ_WRITE_RETURN_TYPE _ssize_t #define __LARGE64_FILES 1 diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 6caafea66..13657a078 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -207,12 +207,13 @@ details. */ exported symbols like fopen64, which might confuse configure. 86: Export ftok 87: Export vsyslog + 88: Export _getreent */ /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 87 +#define CYGWIN_VERSION_API_MINOR 88 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible diff --git a/winsup/cygwin/ioctl.cc b/winsup/cygwin/ioctl.cc index 9f219ecd6..0b11b28d2 100644 --- a/winsup/cygwin/ioctl.cc +++ b/winsup/cygwin/ioctl.cc @@ -13,7 +13,6 @@ details. */ #include "winsup.h" #include -#include #include "cygerrno.h" #include "security.h" #include "fhandler.h" diff --git a/winsup/cygwin/malloc_wrapper.cc b/winsup/cygwin/malloc_wrapper.cc index 14db2fd79..b2729fb85 100644 --- a/winsup/cygwin/malloc_wrapper.cc +++ b/winsup/cygwin/malloc_wrapper.cc @@ -18,7 +18,6 @@ details. */ #include "fhandler.h" #include "path.h" #include "dtable.h" -#include #include "cygerrno.h" #include "cygheap.h" #include "heap.h" diff --git a/winsup/cygwin/mmap.cc b/winsup/cygwin/mmap.cc index e423156a6..172468038 100644 --- a/winsup/cygwin/mmap.cc +++ b/winsup/cygwin/mmap.cc @@ -13,7 +13,6 @@ details. */ #include #include #include -#include #include "security.h" #include "fhandler.h" #include "path.h" diff --git a/winsup/cygwin/msg.cc b/winsup/cygwin/msg.cc index c76fd8ee7..fecaa068a 100644 --- a/winsup/cygwin/msg.cc +++ b/winsup/cygwin/msg.cc @@ -15,7 +15,6 @@ details. */ #include #include -#include #include "cygerrno.h" diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index 7890c9bc4..c5a2a3ec4 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -13,7 +13,6 @@ details. */ #define __INSIDE_CYGWIN_NET__ #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/passwd.cc b/winsup/cygwin/passwd.cc index cdb73b0d9..2db275e54 100644 --- a/winsup/cygwin/passwd.cc +++ b/winsup/cygwin/passwd.cc @@ -12,7 +12,6 @@ details. */ #include #include #include -#include #include "cygerrno.h" #include "security.h" #include "fhandler.h" diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 3973a32af..3f6c1e79b 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -53,7 +53,6 @@ details. */ #include #include #include -#include #include #include #include diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index 74e14f354..6f1c3e953 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -11,7 +11,6 @@ details. */ #include "winsup.h" #include #include -#include #include #include "security.h" #include "fhandler.h" diff --git a/winsup/cygwin/pipe.cc b/winsup/cygwin/pipe.cc index df8fbafc5..45bb984a9 100644 --- a/winsup/cygwin/pipe.cc +++ b/winsup/cygwin/pipe.cc @@ -12,7 +12,6 @@ details. */ #include "winsup.h" #include -#include #include #include "cygerrno.h" #include "security.h" diff --git a/winsup/cygwin/poll.cc b/winsup/cygwin/poll.cc index 44d00b9a5..3c39f06c0 100644 --- a/winsup/cygwin/poll.cc +++ b/winsup/cygwin/poll.cc @@ -15,7 +15,6 @@ #include #include #include -#include #include #define USE_SYS_TYPES_FD_SET #include diff --git a/winsup/cygwin/resource.cc b/winsup/cygwin/resource.cc index 01e065bb5..e87702bab 100644 --- a/winsup/cygwin/resource.cc +++ b/winsup/cygwin/resource.cc @@ -13,7 +13,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include #include #include "cygerrno.h" diff --git a/winsup/cygwin/scandir.cc b/winsup/cygwin/scandir.cc index 52a36eab6..a2f682a50 100644 --- a/winsup/cygwin/scandir.cc +++ b/winsup/cygwin/scandir.cc @@ -13,7 +13,6 @@ #include "winsup.h" #include #include -#include #include "cygerrno.h" extern "C" int diff --git a/winsup/cygwin/sched.cc b/winsup/cygwin/sched.cc index 99c73914d..b29d7a49e 100644 --- a/winsup/cygwin/sched.cc +++ b/winsup/cygwin/sched.cc @@ -16,7 +16,6 @@ #include "winsup.h" #include -#include #include "cygerrno.h" #include #include diff --git a/winsup/cygwin/sec_acl.cc b/winsup/cygwin/sec_acl.cc index c8f326627..fbc4989a4 100644 --- a/winsup/cygwin/sec_acl.cc +++ b/winsup/cygwin/sec_acl.cc @@ -15,7 +15,6 @@ details. */ #include #include #include -#include #include #include #include diff --git a/winsup/cygwin/sec_helper.cc b/winsup/cygwin/sec_helper.cc index c2e8c5e0f..c8c627ae1 100644 --- a/winsup/cygwin/sec_helper.cc +++ b/winsup/cygwin/sec_helper.cc @@ -15,7 +15,6 @@ details. */ #include #include #include -#include #include #include #include diff --git a/winsup/cygwin/security.cc b/winsup/cygwin/security.cc index 8bfb7d569..7bae8f4c7 100644 --- a/winsup/cygwin/security.cc +++ b/winsup/cygwin/security.cc @@ -16,7 +16,6 @@ details. */ #include #include #include -#include #include #include #include diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index 100d6f263..545ceceb6 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -20,7 +20,6 @@ details. */ #define __INSIDE_CYGWIN_NET__ #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/sem.cc b/winsup/cygwin/sem.cc index 63aba8e80..97d91a354 100644 --- a/winsup/cygwin/sem.cc +++ b/winsup/cygwin/sem.cc @@ -15,7 +15,6 @@ details. */ #include #include -#include #include "cygerrno.h" diff --git a/winsup/cygwin/shared.cc b/winsup/cygwin/shared.cc index 30c4582be..8bcf2b7db 100644 --- a/winsup/cygwin/shared.cc +++ b/winsup/cygwin/shared.cc @@ -14,7 +14,6 @@ details. */ #include #include #include -#include #include "pinfo.h" #include "security.h" #include "fhandler.h" diff --git a/winsup/cygwin/shm.cc b/winsup/cygwin/shm.cc index 618cac182..fa0375d73 100644 --- a/winsup/cygwin/shm.cc +++ b/winsup/cygwin/shm.cc @@ -16,7 +16,6 @@ details. */ #include #include -#include #include #include diff --git a/winsup/cygwin/signal.cc b/winsup/cygwin/signal.cc index 547a1285d..0530fcf47 100644 --- a/winsup/cygwin/signal.cc +++ b/winsup/cygwin/signal.cc @@ -12,7 +12,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include #include "cygerrno.h" #include @@ -297,8 +296,8 @@ abort (void) be flushed. However this is the way FreeBSD does it, and it is much easier to do things this way, so... */ - if (_reent_clib ()->__cleanup) - _reent_clib ()->__cleanup (_reent_clib ()); + if (_REENT->__cleanup) + _REENT->__cleanup (_REENT); /* Ensure that SIGABRT can be caught regardless of blockage. */ sigset_t sig_mask; diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index 5d3b2e220..34492a9ee 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -14,7 +14,6 @@ details. */ #include #include #include -#include #include #include #include diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index e7b04ad37..eeee13ccc 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -14,7 +14,6 @@ details. */ #include #include #include -#include #include #include #include diff --git a/winsup/cygwin/strace.cc b/winsup/cygwin/strace.cc index 38cf25907..f88cdf0c2 100644 --- a/winsup/cygwin/strace.cc +++ b/winsup/cygwin/strace.cc @@ -14,7 +14,6 @@ details. */ #include #include #include -#include #include "pinfo.h" #include "perprocess.h" #include "cygwin_version.h" diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 8922f948a..ad6a66fb9 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -29,7 +29,6 @@ details. */ #include #include #include -#include #include #include #include diff --git a/winsup/cygwin/sysconf.cc b/winsup/cygwin/sysconf.cc index cc5fc24a6..678d978a9 100644 --- a/winsup/cygwin/sysconf.cc +++ b/winsup/cygwin/sysconf.cc @@ -10,7 +10,6 @@ details. */ #include "winsup.h" #include -#include #include #include #include diff --git a/winsup/cygwin/syslog.cc b/winsup/cygwin/syslog.cc index b87ff6699..a21a8cb46 100644 --- a/winsup/cygwin/syslog.cc +++ b/winsup/cygwin/syslog.cc @@ -14,7 +14,6 @@ details. */ #include #include #include -#include #include "security.h" #include "fhandler.h" #include "path.h" diff --git a/winsup/cygwin/termios.cc b/winsup/cygwin/termios.cc index c7dd20d60..60ef9641f 100644 --- a/winsup/cygwin/termios.cc +++ b/winsup/cygwin/termios.cc @@ -12,7 +12,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include #include #include "cygerrno.h" diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index ac7d4b8c0..60e94e794 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -45,16 +45,21 @@ details. */ extern int threadsafe; -struct _reent * -_reent_clib () +extern "C" struct _reent * +__getreent () { struct __reent_t *_r = (struct __reent_t *) MT_INTERFACE->reent_key.get (); -#ifdef _CYG_THREAD_FAILSAFE if (_r == 0) - system_printf ("local thread storage not inited"); + { +#ifdef _CYG_THREAD_FAILSAFE + system_printf ("local thread storage not inited"); #endif + /* Return _impure_ptr as long as MTinterface is not initialized */ + return _impure_ptr; + } + return _r->_clib; } @@ -64,10 +69,14 @@ _reent_winsup () struct __reent_t *_r = (struct __reent_t *) MT_INTERFACE->reent_key.get (); -#ifdef _CYG_THREAD_FAILSAFE if (_r == 0) - system_printf ("local thread storage not inited"); + { +#ifdef _CYG_THREAD_FAILSAFE + system_printf ("local thread storage not inited"); #endif + return NULL; + } + return _r->_winsup; } @@ -212,6 +221,20 @@ MTinterface::fixup_after_fork (void) { pthread_key::fixup_after_fork (); +#ifndef __SIGNALS_ARE_MULTITHREADED__ + /* As long as the signal handling not multithreaded + switch reents storage back to _impure_ptr for the mainthread + to support fork from threads other than the mainthread */ + struct _reent *reent_old = __getreent (); + + if (reent_old && _impure_ptr != reent_old) + *_impure_ptr = *reent_old; + reents._clib = _impure_ptr; + reents._winsup = &winsup_reent; + winsup_reent._process_logmask = LOG_UPTO (LOG_DEBUG); + reent_key.set (&reents); +#endif + threadcount = 1; pthread::init_mainthread (); diff --git a/winsup/cygwin/thread.h b/winsup/cygwin/thread.h index 55d94157b..e89640e6b 100644 --- a/winsup/cygwin/thread.h +++ b/winsup/cygwin/thread.h @@ -110,7 +110,6 @@ struct __reent_t struct _winsup_t *_winsup; }; -_reent *_reent_clib (); _winsup_t *_reent_winsup (); void SetResourceLock (int, int, const char *) __attribute__ ((regparm (3))); void ReleaseResourceLock (int, int, const char *) diff --git a/winsup/cygwin/times.cc b/winsup/cygwin/times.cc index d56dbabc8..e2524b1a7 100644 --- a/winsup/cygwin/times.cc +++ b/winsup/cygwin/times.cc @@ -15,7 +15,6 @@ details. */ #include #include #include -#include #include "cygerrno.h" #include "security.h" #include "fhandler.h" diff --git a/winsup/cygwin/tty.cc b/winsup/cygwin/tty.cc index ef3252be7..23e6f6219 100644 --- a/winsup/cygwin/tty.cc +++ b/winsup/cygwin/tty.cc @@ -9,7 +9,6 @@ Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */ #include "winsup.h" -#include #include #include #include diff --git a/winsup/cygwin/uinfo.cc b/winsup/cygwin/uinfo.cc index 7c76722f0..4e688a3fa 100644 --- a/winsup/cygwin/uinfo.cc +++ b/winsup/cygwin/uinfo.cc @@ -17,7 +17,6 @@ details. */ #include #include #include -#include #include #include "pinfo.h" #include "security.h" diff --git a/winsup/cygwin/wait.cc b/winsup/cygwin/wait.cc index 3b6427ad9..fd782783e 100644 --- a/winsup/cygwin/wait.cc +++ b/winsup/cygwin/wait.cc @@ -11,7 +11,6 @@ details. */ #include "winsup.h" #include #include -#include #include "cygerrno.h" #include "sigproc.h" #include "perthread.h" diff --git a/winsup/cygwin/window.cc b/winsup/cygwin/window.cc index bdcb45060..ea9ed6e04 100644 --- a/winsup/cygwin/window.cc +++ b/winsup/cygwin/window.cc @@ -13,7 +13,6 @@ details. */ #include "winsup.h" #include #include -#include #include #include #include