summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/dcrt0.cc
Commit message (Collapse)AuthorAgeFilesLines
* Switching the Cygwin DLL to LGPLv3+, dropping commercial buyout optioncygwin-2_5_2-releaseCorinna Vinschen2016-06-231-3/+0
| | | | | | | | | | | | | | Bump GPLv2+ to GPLv3+ for some files, clarify BSD 2-clause. Everything else stays under GPLv3+. New Linking Exception exempts resulting executables from LGPLv3 section 4. Add CONTRIBUTORS file to keep track of licensing. Remove 'Copyright Red Hat Inc' comments. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Remove MALLOC_CHECK and calls to it entirelyCorinna Vinschen2016-04-011-1/+0
| | | | | | MALLOC_CHECK got useless with commit b259af5. Remove it throughout. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Remove remnants of never-defined MALLOC_DEBUG and NEWVFORKPeter Foley2016-04-011-14/+0
| | | | | | | | | | | | | | | | | | | | MALLOC_DEBUG and NEWVFORK haven't been defined since 2008 (46162537516c5e5fbb). Remove all references to tem. winsup/cygwin/ChangeLog: acconfig.h: delete dcrt0.cc (dll_crt0_1): remove NEWVFORK code. dcrt0.cc (do_exit): ditto. debug.h: ditto. dtable.h: ditto. winsup.h: ditto. globals.cc: ditto. malloc_wrapper.cc: ditto. malloc_wrapper.cc (malloc_init): ditto. spawn.cc (spawnve): ditto. syscalls.cc (setsid): ditto. Signed-off-by: Peter Foley <pefoley2@pefoley.com>
* Do not treat the command line or environment like pathsJohannes Schindelin2016-01-081-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | * dcrt0.cc (dll_crt0_1), environ.cc (environ_init, getwinenveq, build_env), strfuncs.cc (sys_wcstombs, sys_wcstombs_alloc), wchar.c (sys_wcstombs, sys_wcstombs_alloc): avoid mis-conversions of text that does not, actually, refer to a path or file name Detailed explanation: Our WCS -> UTF conversion handles the private Unicode page specially to allow for otherwise invalid file names. However, this handling makes no sense for command-lines, nor environment variables, which we would rather convert verbatim. As a stop-gap solution, let's just introduce a version of the sys_wcstombs() function that specifically excludes that file name conversion magic. The proper solution is to change sys_wcstombs() to assume that it is not a path that wants to be converted, and introduce sys_wcstombs_path() that does, but that is a bigger task which we leave for another patch. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
* Fix minor style issue in _dll_crt0.Corinna Vinschen2015-12-071-1/+1
| | | | | | Fix missing space. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Always allocate main thread stack from pthread stack area on x86_64.Corinna Vinschen2015-12-071-36/+48
| | | | | | | | | | | | | | | | | | | | | | | | | * dcrt0.cc: Semi-revert commit 12743c2d5d2721f3a80b4d7671a349be03c1f520. (dll_crt0_0): Drop setting wow64_needs_stack_adjustment on 64 bit. (_dll_crt0): Split out 64 bit code again and always create new main thread stack, unless forked off from the non main thread in the parent. Call create_new_main_thread_stack with parent stack commitsize if started from the parent's main thread. Only call child_info_fork::alloc_stack for the latter case on 64 bit. Slightly rearrange moving rsp and rbp to new stack and document how. Revert 32 bit wow64 handling to its former self. * miscfunc.cc (create_new_main_thread_stack): Take a commitsize parameter and use it if it's not 0. Don't set _main_tls here, it's done in the caller _dll_crt0 anyway. Return stackbase - 16 bytes, rather than stacklimit (which was very wrong anyway). * miscfuncs.h (create_new_main_thread_stack): Accommodate declaration to aforementioned change. * wincap.h (wincaps::has_3264_stack_broken): Remove element. * wincap.cc: Ditto, throughout. * wow64.cc: Semi-revert to pre-12743c2d5d2721f3a80b4d7671a349be03c1f520 but keep architecture-agnostic type changes intact. Fix formatting. * wow64.h: Revert to pre-12743c2d5d2721f3a80b4d7671a349be03c1f520. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* On 64 bit, only create new thread stack if started from 32 bit process on ↵Corinna Vinschen2015-12-031-41/+29
| | | | | | | | | | | | | | | | | | | | | | affected platforms * dcrt0.cc (dll_crt0_0): On 64 bit, set wow64_needs_stack_adjustment if not started from a 64 bit process. (_dll_crt0): Enable wow64_needs_stack_adjustment branch on 64 bit as well. Remove 64 bit only code. Introduce CREATE_STACK and FIX_STACK macros to conditionalize the code. Rearrange and partially rewrite comments. * wincap.h (wincaps::has_3264_stack_broken): New element. * wincap.cc: Implement above element throughout. (wincapc::init): Set has_3264_stack_broken to false on 32 bit. * wow64.cc: Enable functionality on 64 bit architecture, except for wow64_revert_to_original_stack. Enhance comments to explain. (wow64_eval_expected_main_stack): Make 64 bit clean. (wow64_test_for_64bit_parent): Ditto. * wow64.h: Export wow64_revert_to_original_stack on 32 bit only, everything else on all architectures. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Always move 64 bit main thread stack to defined pthread stack areaCorinna Vinschen2015-12-031-0/+29
| | | | | | | | | | | x86_64 only: * dcrt0.cc (_dll_crt0): Always move stack to pthread stack area. Explain why. * miscfuncs.cc (create_new_main_thread_stack): New function to create OS-like stack for main thread in pthread stack area. * miscfuncs.cc (create_new_main_thread_stack): Declare. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cleanup in dcrt0.cc and fork.ccCorinna Vinschen2015-12-031-3/+3
| | | | | | | | * dcrt0.cc (child_info_fork::alloc_stack): Fix formatting. * fork.cc (frok::parent): Fix formatting. (child_copy): Change type of res to BOOL. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Always restore full TEB stack info in forkeeCorinna Vinschen2015-12-031-9/+9
| | | | | | | * dcrt0.cc (dll_crt0_1): Always restore the TEB stack info. Especially restore DeallocationStack. Fix comment. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Add missing dcrt0.cc patch to previous commitCorinna Vinschen2015-12-031-1/+0
| | | | | | * dcrt0.cc (child_info_fork::alloc_stack): Don't set stackaddr to 0. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Rename parent stack members in child_info struct to align with OS namesCorinna Vinschen2015-12-021-18/+18
| | | | | | | | | * child_info.h (CURR_CHILD_INFO_MAGIC): Align to below change. (class child_info_fork): Rename stacktop to stacklimit. Rename stackbottom to stackbase. Accommodate name change throughout Cygwin. Rephrase comments to be clearer. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Drop using _tlsbase and _tlstop in favor of access via NtCurrentTeb.Corinna Vinschen2015-12-021-13/+15
| | | | | | | | | | | | | * cygtls.h (_tlsbase): Remove. Replace throughout with NtCurrentTeb()->Tib.StackBase. (_tlstop): Remove. Replace throughout with NtCurrentTeb()->Tib.StackLimit. * dcrt0.cc (child_info_fork::alloc_stack): Move definition of local teb variable up to be used throughout. * include/cygwin/config.h (__getreent): Use inline function on both architectures. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix length returned from sys_cp_wcstombs in case nwc > # of wcharsCorinna Vinschen2015-10-221-1/+1
| | | | | | | | | | * strfuncs.cc (sys_cp_wcstombs): Always return number of multibytes without trailing NUL as the documentation implies. Throughout Cygwin, fix usage to align to this pattern. * fhandler_process.cc (format_process_winexename): Drop trailing NUL and LF from output. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* cygwin: Fix copyright datesCorinna Vinschen2015-07-291-1/+1
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Reduce stack pressure throughout CygwinCorinna Vinschen2015-07-191-3/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * dcrt0.cc (initial_env): Reduce size of local path buffers to PATH_MAX. Allocate debugger_command from process heap. (init_windows_system_directory): Very early initialize new global variable global_progname. * dll_init.cc (dll_list::alloc): Make path buffer static. Explain why. (dll_list::populate_deps): Use tmp_pathbuf for local path buffer. * exceptions.cc (debugger_command): Convert to PWCHAR. (error_start_init): Allocate debugger_command and fill with wide char strings. Only allocate if NULL. (try_to_debug): Just check if debugger_command is a NULL pointer to return. Drop conversion from char to WCHAR and drop local variable dbg_cmd. * globals.cc (global_progname): New global variable to store Windows application path. * pinfo.cc (pinfo_basic::pinfo_basic): Just copy progname over from global_progname. (pinfo::status_exit): Let path_conv create the POSIX path to avoid local buffer. * pseudo_reloc.cc (__report_error): Utilize global_progname, drop local buffer. * smallprint.cc (__small_vsprintf): Just utilize global_progname for %P format specifier. (__small_vswprintf): Ditto. * strace.cc (PROTECT): Change to reflect x being a pointer. Reformat. (CHECK): Ditto. Reformat. (strace::activate): Utilize global_progname, drop local buffer. Fix formatting. (strace::vsprntf): Reduce size of local progname buffer to NAME_MAX. Copy and, if necessary, convert only the last path component to progname. (strace_buf_guard): New muto. (buf): New static pointer. (strace::vprntf): Use buf under strace_buf_guard lock only. Allocate buffer space for buf on Windows heap. * wow64.cc (wow64_respawn_process): Utilize global_progname, drop local path buffer. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* x86_64: Handle myfault exceptions when running on alternate signal stackCorinna Vinschen2015-07-071-0/+5
| | | | | | | | | | | | | | | | | | x86_64 only: * cygtls.cc (san::leave): Restore _my_tls.andreas. * cygtls.h (class san): Add _clemente as in 32 bit case. Add ret and frame members. (san::san): Handle _my_tls.andreas as on 32 bit. Take parameter and write it to new member ret. Store current stack pointer in frame. (san::~san): New destructor to restore _my_tls.andreas. (__try): Use __l_except address as parameter to san::san. * dcrt0.cc (dll_crt0_0): Add myfault_altstack_handler as vectored continuation handler. * exception.h (myfault_altstack_handler): Declare. * exceptions.cc (myfault_altstack_handler): New function. Explain what it's good for. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Simplify stack allocation code in child after forkCorinna Vinschen2015-07-071-67/+56
| | | | | | | | | | | | | * child_info.h (CURR_CHILD_INFO_MAGIC): Update. (child_info_fork::alloc_stack_hard_way): Drop declaration. * dcrt0.cc (child_info_fork::alloc_stack_hard_way): Fold into child_info_fork::alloc_stack. (getstack): Remove. (child_info_fork::alloc_stack): Simplify check for application-provided stack in "hard way" code. Don't call getstack for each page, just reallocate stack immediately as required. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Align hard stack allocation to pthread stack setup changesCorinna Vinschen2015-07-051-11/+17
| | | | | | | | * dcrt0.cc (CYGWIN_GUARD): Remove. (child_info_fork::alloc_stack_hard_way): Align stack commit to changes of thread stack setup in CygwinCreateThread. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* * dcrt0.cc (cygwin__cxa_atexit): Fetch correct DSO handle valueCorinna Vinschen2014-11-071-6/+8
| | | | by searching dll list. Explain why.
* * dcrt0.cc (cygwin_atexit): Change preceeding comment to reflectCorinna Vinschen2014-11-061-6/+6
| | | | | | | | | | API version numbers. * external.cc (cygwin_internal): disable setting cxx_malloc on 64 bit. Add CW_FIXED_ATEXIT case. * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump. * include/sys/cygwin.h (cygwin_getinfo_types): Add CW_FIXED_ATEXIT. * lib/atexit.c (atexit): Test running Cygwin version by checking return value of cygwin_internal (CW_FIXED_ATEXIT).
* * Makefile.in (NEW_FUNCTIONS): Add atexit to be not exported.Corinna Vinschen2014-11-051-17/+18
| | | | | | | | * lib/atexit.c (atexit): New, statically linkable version of atexit. * dcrt0.cc (cygwin_atexit): Add comment to mark this function as old entry point. Indiscriminately check for DSO of function pointer for all functions, if checking for DSO of return address fails on x86_64. Change comment accordingly.
* * common.din (__cxa_atexit): Define as cygwin__cxa_atexit.Corinna Vinschen2014-10-291-0/+18
| | | | * dcrt0.cc (cygwin__cxa_atexit): New function. Explain what we do.
* * dcrt0.cc (cygwin_atexit): Add workaround for broken atexit callsCorinna Vinschen2014-10-271-0/+30
| | | | in __gcc_register_frame of DLLs built with gcc-4.8.3-3.
* * cygheap.cc (cygheap_fixup_in_child): Call set_dll_dir.Corinna Vinschen2014-10-171-3/+4
| | | | | | | | | | | | | | | | | (init_cygheap::init_installation_root): Just memmove contents of installation_root instead of calling GetModuleFileNameW again. Copy installation_root to installation_dir before stripping of "bin" dir. Don't call SetDllDirectory here. Explain what we do. (setup_cygheap): New function taking over initial cygheap setup from memory_init. Additionally call set_dll_dir. * cygheap.h (struct init_cygheap): Add installation_dir member. (init_cygheap::set_dll_dir): Define. (setup_cygheap): Declare. * dcrt0.cc: Throughout drop parameter from memory_init call. (dll_crt0_0): Call setup_cygheap prior to memory_init. * dlfcn.cc (dlopen): Change comment to point to the right function. * shared.cc (memory_init): Drop parameter. Drop cygheap setup. * shared_info.h (memory_init): Change declaration accordingly.
* * dlfcn.cc (dlopen): Disable old 32 bit code on 64 bit.Corinna Vinschen2014-10-101-0/+2
| | | | | * dcrt0.cc (check_sanity_and_sync): Ditto. * dll_init.cc (dll_dllcrt0_1): Fix typo in comment.
* * Throughout, use __try/__except/__endtry blocks, rather than myfaultCorinna Vinschen2014-08-221-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | handler. * cygtls.cc (_cygtls::remove): Accommodate the fact that pathbufs has been moved from _local_storage to _cygtls. * cygtls.h (class tls_pathbuf): Add comment to hint to gendef usage of counters. Change type of counters to uint32_t for clarity. Remove _cygtls as friend class. (struct _local_storage): Move pathbufs from here... (struct _cygtls): ...to here, allowing to access it from _sigbe. (class san): Only define on 32 bit. Remove errno, _c_cnt and _w_cnt members. (san::setup): Drop parameter. Don't initialize removed members. (san::leave): Don't set removed members. (class myfault): Only define on 32 bit. (myfault::faulted): Only keep implementation not taking any parameter. Drop argument in call to sebastian.setup. (__try/__leave/__except/__endtry): Implement to support real SEH. For now stick to SJLJ on 32 bit. * dcrt0.cc (dll_crt0_0): Drop 64 bit call to exception::install_myfault_handler. * exception.h (exception_handler): Define with EXCEPTION_DISPOSITION as return type. (PDISPATCHER_CONTEXT): Define as void * on 32 bit. Define as pointer to _DISPATCHER_CONTEXT on 64 bit. (class exception): Define separately for 32 and 64 bit. (exception::myfault): Add handler for myfault SEH handling on 64 bit. (exception::exception): Fix mangled method name to account for change in type of last parameter. (exception::install_myfault_handler): Remove. * exceptions.cc (exception::myfault_handle): Remove. (exception::myfault): New SEH handler for 64 bit. * gendef (_sigbe): Set tls_pathbuf counters to 0 explicitely when returning to the caller. * ntdll.h: Move a comment to a better place. (struct _SCOPE_TABLE): Define on 64 bit. * thread.cc (verifyable_object_isvalid): Remove gcc 4.7 workaround. * tls_pbuf.cc (tls_pbuf): Fix to accommodate new place of pathbufs. (tls_pathbuf::destroy): Change type of loop variables to uint32_t. * tls_pbuf.h (class tmp_pathbuf): Change type of buffer counters to uint32_t. Accommodate new place of pathbufs. * tlsoffsets.h: Regenerate. * tlsoffsets64.h: Regenerate.
* * autoload.cc: Replace WNet[...]A with WNet[...]W imports.Corinna Vinschen2014-08-191-3/+1
| | | | | | | * dcrt0.cc (initial_env): Drop strlwr calls. Call strcasestr instead. * fhandler_netdrive.cc: Throughout, convert to calling WNet UNICODE functions. Use tmp_pathbuf rather than alloca. Replace call to strlwr with call to RtlDowncaseUnicodeString.
* * common.din (__cxa_finalize): Export.Yaakov Selkowitz2014-08-071-2/+2
| | | | | | | * dcrt0.cc (cygwin_atexit): Use d->handle with __cxa_atexit. * dll_init.cc (dll_list::detach): Use d->handle with __cxa_finalize. * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Use 274 for __cxa_finalize as well.
* * dcrt0.cc (insert_file): Fix resource leaks (CIDs 59987, 59988).Corinna Vinschen2014-06-231-0/+3
|
* * dcrt0.cc (dll_crt0_0): Install myfault exception handler on x86_64.Corinna Vinschen2014-03-281-0/+4
| | | | | | | | | | | | | | | | | | | | | | * exception.h (exception_list): Typedef as void on x86_64. (exception::handler_installed): Remove. (exception::handle_while_being_debugged): Remove. (exception::myfault_handle): Declare for x86_64. (exception::handle): Declare as ordinary exception handler on x86_64 as well. (exception::exception): Drop previous code (again). Install exception::handle as SEH handler. (exception::install_myfault_handler): New x86_64-only method to install exception::myfault_handle as VEH handler. Explain why. (exception::~exception): For x86_64, define frame end label (again). * exceptions.cc (CYG_EXC_CONTINUE_EXECUTION): Drop definition. (CYG_EXC_CONTINUE_SEARCH): Ditto. (exception::myfault_handle): New x86_64-only method, VEH handler to handle myfault exceptions. (exception::handle): Define as ordinary exception handler on x86_64 as well. Use ExceptionContinueExecution and ExceptionContinueSearch throughout instead of deleted Cygwin macros. Don't handle myfault exceptions on x86_64.
* * dcrt0.cc (dll_crt0_1): Call initial_setlocale before fetchingCorinna Vinschen2014-02-161-3/+3
| | | | current user information.
* * dcrt0.cc (child_info_spawn::handle_spawn): Call fixup_lockf_after_execCorinna Vinschen2014-02-101-2/+2
| | | | | | | | with additional argument to specify if the process has been execed or spawned. * flock.cc (fixup_lockf_after_exec): Take bool parameter to handle exec and spawn differently. In case of spawn, just give up POSIX locks in favor of the still running parent. Add comments to explain.
* * dcrt0.cc (dll_crt0_1): Remove NtSetTimerResolution.Christopher Faylor2013-12-181-1/+0
| | | | | * pinfo.cc (pinfo::init): Increase wait interval when waiting for procinfo to stabilize.
* * autoload.cc (timeBeginPeriod): Delete.Christopher Faylor2013-12-181-1/+1
| | | | * dcrt0.cc (dll_crt0_1): Use NtSetTimerResolution rather than timeBeginPeriod.
* * autoload.cc (timeBeginPeriod): Autoload.Christopher Faylor2013-12-181-0/+1
| | | | | | | | * dcrt0.cc (dll_crt0_1): Use timeBeginPeriod to set default resolution to 1 ms. * pinfo.cc (pinfo::thisproc): Set ppid for redirected _pinfo blocks too. (pinfo::init): Avoid using VirtualQuery. Just rely on the assumption that procinfo will be populated. * pinfo.h (_pinfo::ppid): Move into redirected block.
* * winsup.h (cygbench): Fix declaration to match definition.Christopher Faylor2013-07-171-3/+2
| | | | * dcrt0.cc (initial_env): Remove unused variable.
* * dcrt0.cc (child_info_fork::alloc_stack): Fix a comparison to avoidCorinna Vinschen2013-06-271-1/+1
| | | | | taking 4K more stack in forked child. * fork.cc (frok::parent): Print child exit code in hex if sync failed.
* * dcrt0.cc (child_info_fork::alloc_stack): Don't subtract 4096 from stackChristopher Faylor2013-06-191-1/+1
| | | | pointer since getstack() already does that.
* * dcrt0.cc (child_info_fork::alloc_stack_hard_way): Fix datatype ofCorinna Vinschen2013-05-231-7/+10
| | | | | | | | | stacksize to SIZE_T. Cast to SIZE_T in pointer arithmetic. Slightly enhance output in case of a fatal error. * fork.cc (frok::parent): Always set ch.stackaddr to DeallocationStack value of current thread to help stack reservation in child_info_fork::alloc_stack_hard_way along. Simplify subsequent code storing stack values in ch. Print guardsize in hex, too.
* * Merge in cygwin-64bit-branch.Corinna Vinschen2013-04-231-26/+53
|
* * cygheap.cc (init_cygheap::find_tls): Add a comment.Christopher Faylor2013-04-071-6/+3
| | | | | | | | * dcrt0.cc (parent_sigmask): Delete. (dll_crt0_1): Use spawn_info->moreinfo->sigmask rather than saved parent signal mask. * thread.cc (pthread::thread_init_wrapper): Add comment stressing the importance of maintaining ordering of statements.
* * child_info.h (cygheap_exec_info::sigmask): Declare new field.Christopher Faylor2013-03-311-1/+8
| | | | | | | | | | | | | | | | | | | | | | | * cygheap.cc (init_cygheap::find_tls): Rename threadlist_ix -> ix. Only take one pass through thread list, looking for eligible threads to signal. Set a new param indicating that function has found a sigwait* mask. * cygheap.h (init_cygheap::find_tls): Reflect new parameter. * dcrt0.cc (parent_sigmask): New variable. (child_info_spawn::handle_spawn): Save parent's signal mask here. (dll_crt0_1): Restore parent's signal mask to tls sigmask as appropriate. Call sig_dispatch_pending to flush signal queue when we can finally do something with signals. * exceptions.cc (sigpacket::process): Avoid attempting to handle signals if we haven't finished initializing. Rely on the fact that find_tls will do mask checking and don't do it again. Delete ill-named 'dummy' variable. * sigproc.cc (cygheap_exec_info::alloc): Save calling thread's signal mask in new sigmask field. (wait_sig): Try to debug when WFSO fails and DEBUGGING is defined. * thread.cc (pthread::set_tls_self_pointer): Make this a true automatic method rather than inexplicably relying on a thread parameter. (pthread::thread_init_wrapper): Accommodate set_tls_self_pointer change to non-static. Initialize sigmask before setting tid or suffer signal races. * ehread.h (pthread::set_tls_self_pointer): Make non-static, delete parameter.
* * dcrt0.cc (dll_crt0_1): Comment assumption.Christopher Faylor2013-01-211-0/+2
| | | | | * exceptions.cc (sigpacket::setup_handler): Avoid sending signals during fork processing.
* * dcrt0.cc (dll_crt0_1): Flag that we are working "incyg". Handle any signalsChristopher Faylor2013-01-211-1/+12
| | | | | (presumably exiting signals) which may have come in while we are in the process of setting up.
* * dcrt0.cc (main_thread_sinit): New inline function. Fix and explainCorinna Vinschen2013-01-091-2/+25
| | | | | a stdio initialization issue. (dll_crt0_1): Call main_thread_sinit rather than __sinit.
* * DevNotes: Add entry cgf-000019.Christopher Faylor2012-12-281-4/+1
| | | | | | | | | | | | | | | | | | | | | * dcrt0.cc (do_exit): Just set exit_state to ES_EVENTS_TERMINATE and nuke call to events_terminate which just set a superfluous flag. * sigproc.cc (signal_exit_code): New variable. (setup_signal_exit): Define new function. (_cygtls::signal_exit): Remove accommodations for closing the signal pipe handle. (exit_thread): Just sleep if we're exiting. (wait_sig): If signal_exit_code is set, just handle bookkeeping signals and exit ReadFile loop if there is nothing more to process. Call signal_exit at end if signal_exit_code is non-zero. * sigproc.h (setup_signal_exit): Declare new function. * exceptions.cc (sigpacket::process): Use setup_signal_exit to control exiting due to a signal. (exception::handle): Ditto. Query exit_state rather than defunct exit_already to determine if we are exiting. * globals.cc (ES_SIGNAL_EXIT): New enum. * sync.h (lock_process::release): New function for explicitly unlocking muto. (lock_process::~lock_process): Use release method.
* * dcrt0.cc (build_argv): Allow quoted filenames in @ expression.Corinna Vinschen2012-12-201-1/+5
|
* revert erroneous checkinChristopher Faylor2012-11-301-2/+0
|
* * spawn.cc (child_info_spawn::worker): Make detection of '/c' case insensitiveChristopher Faylor2012-11-301-0/+2
| | | | when looking for cmd.exe command line.