Commit Graph

58 Commits

Author SHA1 Message Date
Jon TURNEY 02a7f96ef7 * strace.cc (attach_process): Try to turn off DEBUG_ONLY_THIS_PROCESS
if Attaching to a process with the trace-children flag set.
	(handle_output_debug_string): Apparently we don't need to explicitly
	attach for debugging when a child process starts
	* Makefile.in (strace.exe): Link with ntdll
2011-09-15 16:49:51 +00:00
Corinna Vinschen 71d8f118da * loadlib.h: New header implementing safe LoadLibrary calls.
Include throughout files using LoadLibrary function.
	* cygcheck.cc (dump_sysinfo): Retrieve kernel32.dll handle via
	GetModuleHandle, rather than using LoadLibrary.
	* cygpath.cc (get_long_name): Ditto.
	(do_sysfolders): Append .dll suffix in LoadLibrary call.
	* ldh.cc (WinMain): Use LoadLibraryExW with DONT_RESOLVE_DLL_REFERENCES
	to avoid loading malicious library code.
	* locale.cc (print_locale_with_codeset): Change way to retrieve
	kernel32.dll path.
2010-08-28 11:22:37 +00:00
Christopher Faylor dbf41aeeff * strace.cc (mnemonic_table): Add "special" mask option.
(usage): Document it.
* utils.sgml: Ditto.
2010-02-22 20:39:18 +00:00
Christopher Faylor 3afd8b74d9 Update copyright 2010-02-19 20:01:49 +00:00
Christopher Faylor ff3e6bcbec utils/ChangeLog:
* strace.cc (mnemonic_table): Add pthread mask option.
(usage): Document strace pthread mask option.
* utils.sgml: Ditto.

cygwin/ChangeLog:
* include/sys/strace.h: Remove old code.  Add support for ptrace
tracing.
2010-02-19 17:55:27 +00:00
Corinna Vinschen b5f48aa961 * cygcheck.cc (cygwin_dll_path): New global variable.
(load_cygwin): Fetch cygwin DLL path and store in cygwin_dll_path.
	* strace.cc: Full ditto.
	* path.cc (read_mounts): First use the path stored in cygwin_dll_path,
	if available.  Then fall back to fetching own path.  Add comment.
	Drop printing warnings since they look funny in strace output.
2009-11-04 17:00:45 +00:00
Corinna Vinschen 8b800efea5 * strace.cc (main): Open trace output file in UNIX mode. 2009-07-15 15:18:51 +00:00
Christopher Faylor 08825b6edc * strace.cc (create_child): Set CYGWIN=noglob when starting new process so that
Cygwin will leave already-parsed the command line alonw.
2009-04-22 19:08:53 +00:00
Corinna Vinschen 2971f07610 * cygcheck.cc (dump_sysinfo): Fix compiler warning in printf.
* strace.cc (proc_child): Ditto.
	* ldd.cc: Remove now useless undef wcscasecmp.
2009-03-24 13:35:08 +00:00
Christopher Faylor a35d9f1a67 * cygcheck.cc (pathlike::check_existence): Remove class name from declaration.
(display_internet_error): Use proper format specifier for DWORD.
(environ): Remove unneeded declaration.
(main): Use brace around nested if to avoid an overly-helpful compiler warning.
* dump_setup.cc (parse_filename): Reorganize nested if to avoid an
overly-helpful compiler warning.
* path.cc (GUID_shortcut): Use braces around part of initializer which needs
them.
(conv_fstab_spaces): Parenthesize assignment in while loop to avoid a compiler
warning.
(struct opt): Make static.
* ps.cc (main): Reorganize nested if to avoid an overly-helpful compiler
warning.
* regtool.cc: Make some anonymous structs static to avoid a compiler warning.
* ssp.c (lookup_thread_id): Initialize *tix to zero to avoid potential
uninitialized use.
* strace.cc (add_child): Use proper format specifier for DWORD.
(remove_child): Ditto.
(proc_child): Ditto.
2008-09-12 22:43:10 +00:00
Christopher Faylor 82f123e5c6 * strace.cc (create_child): Don't convert a path from cygwin format unless it
has a slash.
2007-07-23 21:03:59 +00:00
Christopher Faylor 99b0856099 * strace.cc (usage): Add missing description for -q. 2007-07-10 00:57:30 +00:00
Christopher Faylor 6265ac10be * strace.cc (proc_child): Propagate return code from child process.
(dostrace): Ditto.
(main): Ditto.
2006-05-24 16:50:50 +00:00
Christopher Faylor 5d97040501 *** cygwin DLL Changes:
* child_info.h (CURR_CHILD_INFO_MAGIC): Reset.
(child_info::dwProcessId): Delete.
(child_info::straced): New variable.
(child_info::handle_fork): New member function.
* dcrt0.cc (in_forkee): New global variable.
(__cygwin_user_data::forkee): Mark as obsolete.
(do_global_ctors): Use in_forkee rather than user_data->forkee.
(get_cygwin_startup_info): Ditto.  Deal with new straced field to allow strace
to deal with children of attached processes.
(initial_env): Accommodate changes to strace::hello.
(child_info_fork::handle_fork): Rename from plain old 'handle_fork'.  Move
alloc_stack() call elsewhere.
(dll_crt0_0): Fill out more of user_data.  Reference handle_fork via fork_info.
Add some debugging output.
(_dll_crt0): Don't wait for sync thread if sync_startup is invalid.  Zero
sync_startup here.  Call alloc_stack() here, if appropriate.
(dll_crt0_1): Use in_forkee rather than user_data->forkee.
(dll_crt0): Ditto.
* malloc_wrapper.cc (malloc_init): Ditto.
* dll_init.cc (in_forkee): Remove local static version of this variable.
(dll_list::load_after_fork): Don't set in_forkee here.
* external.cc (cygwin_internal): Use strace method rather than accessing field
directly.
* fhandler.cc (fhandler_base::read): Ditto.
* fhandler_tty.cc (fhandler_tty_common::__acquire_output_mutex): Ditto.
* fork.cc (frok::parent): Invoke strace write_childpid to communicate with
potential strace.
(child_copy): Add more detail to debugging output.
* init.cc (calibration_id): New static variable.
(prime_threads): Set sync_startup to invalid handle if we already know about
thread_func_ix.  Use static calibration_id to hold calibration thread id.
* munge_threadfunc (munge_threadfunc): Don't try to debug if we don't find
threadfunc_ix.
(dll_entry): Avoid calling munge_threadfunc and _cygtls::remove on non-cygwin
threads invoked during process startup.
* pinfo.cc (set_myself): Always call strace.hello here regardless of DEBUGGING.
* sigproc.cc (child_info::child_info): Remove spurious handling of dwProcessId.
Set straced as appropriate.
* spawn.cc (spawn_guts): Rename ciresrv to ch.  Invoke strace write_childpid to
communicate with potential strace.
* strace.cc: Include child_info.h.
(strace::hello): Remove inited test.  Use active() method to test if strace has
been activated.  Handle case where we are started before
(mypid): New function.
(strace::vsprntf): Try to deal more intelligently with case where progname may
not be filled out.  Put pid in parentheses if it is a windows pid rather than a
cygwin pid.  myself has been filled out.
(strace::write_childpid): New function for notifying strace about the creation
of children.
(strace::vprntf): Use strace method rather than accessing field directly.
(strace_printf): Ditto.
(strace::wm): Ditto.
* winsup.h (in_forkee): Declare.
* include/sys/strace.h (strace::write_childpid): Declare new function.
(strace::attached): Define new function.
(strace::active): Ditto.
(strace::active_val): Ditto.
(_STRACE_ON): Delete.
(_STRACE_OFF): Ditto.
(define_strace0): Use strace method rather than accessing field directly.
(strace_printf_wrap): Ditto.
(strace_printf_wrap1): Ditto.

*** cygwin utils changes:
* strace.cc (nprocesses): Make static global.
(quiet): New variable.
(strace_active): Ditto.
(add_child): Increment nprocesses here.  Don't add a child if it is already
added (windows bug?).  Report on child if not quiet.
(get_child): Just return NULL if child not found.
(remove_child): Report on child if not quiet.
(attach_process): Don't complain if given a windows process.  Use windows pid
in error.
(handle_output_debug_string): Issue error if trying to manipulate a process
that we don't know about.  Handle _STRACE_CHILD_PID - attach to reported child
when we get this.
(proc_child): Move nprocesses to file scope.  Report on exceptions.
(longopts): Implement "--quiet".
(opts): Implement "-q".
(main): Manipulate quiet flag.
* utils.sgml (strace): Add words describing '-q'.
2005-12-29 20:46:34 +00:00
Christopher Faylor 801d6cc753 * strace.cc (show_usecs): Renamed from 'usecs'.
(main): Use show_usecs rather than usecs.  Toggle delta if '-u' is specified.
(handle_output_debug_string): Avoid printing microsecond timestamp if
show_usecs == 0.
* utils.sgml (strace): Add words to describe '-u'.
2005-12-05 16:39:06 +00:00
Christopher Faylor daed3bec54 revert erroneous checkin 2005-10-11 18:39:02 +00:00
Christopher Faylor a5ac89cbbd * Makefile.common (CFLAGS_COMMON): Add -Wstrict-aliasing. 2005-10-11 18:17:59 +00:00
Christopher Faylor cba3b11fc5 * cygcheck.cc (load_cygwin): Make half-hearted attempt to work with older DLLs.
* strace.cc (load_cygwin): Ditto.
2005-05-27 15:45:53 +00:00
Christopher Faylor ac674bc896 * cygcheck.cc (cygwin_internal): Define as a "C" function.
* strace.cc (cygwin_internal): Ditto.
* cygpath.cc (print_version): Update copyright.
2005-05-17 01:26:16 +00:00
Corinna Vinschen 90253b8276 * cygcheck.cc (load_cygwin): Don't touch $PATH for now.
(print_version): Fix copyright.
	* strace.cc (print_version): Ditto.
2005-05-15 12:29:47 +00:00
Christopher Faylor 26c07f704b * strace.cc (attach_process): Don't call load_cygwin(). Assume that it's
already happened.
(dotoggle): Ditto.
(main): Set argv from cygwin environment, if it exists.
2005-05-09 01:21:43 +00:00
Corinna Vinschen a593a4c5e3 * strace.cc (handle_output_debug_string): Fix compiler warning. 2005-03-07 10:24:23 +00:00
Christopher Faylor 78d9eaa5ea * kill (getsig): Avoid buffer overflow when generating a signal name.
* strace.cc (handle_output_debug_string): Make error a little more specific.
2005-02-27 03:03:19 +00:00
Christopher Faylor 459a956197 * ps.cc (main): Eliminate use of PID_ZOMBIE.
* strace.cc (main): Recognize new option for displaying hex value of strace
type.
(handle_output_debug_string): Prepend output with hex value of strace message
if -H is specified.
2005-01-16 17:13:51 +00:00
Corinna Vinschen 4f8dc86255 * strace.cc (_impure_ptr): Remove. 2004-10-06 09:51:11 +00:00
Christopher Faylor 7c03f79971 * Makefile.in (build_dumper): Detect missing iconv library.
* cygpath.cc (dowin): Report on filename conversion errors.
(doit): Ditto.
* strace.cc (main): Use symbolic constant for _STRACE_ALL when setting mask.
2004-02-21 04:51:15 +00:00
Corinna Vinschen 960471b1a6 * strace.cc (opts): Add leading '+' to force posixly correct
behaviour.
	(main): Revert POSIXLY_CORRECT manipulations.
2004-02-11 13:30:02 +00:00
Christopher Faylor 6dbfb93a04 * strace.cc (main): Guard against previous setting of POSIXLY_CORRECT. 2004-02-11 00:29:42 +00:00
Christopher Faylor c662f402aa * strace.cc: Update copyrights.
* cygcheck.cc: Update copyrights.
2004-02-10 16:15:53 +00:00
Christopher Faylor 744ed079bc * strace.cc (main): Ensure POSIXLY_CORRECT argument ordering.
* cygcheck.cc (main): Ditto.
2004-02-10 16:01:31 +00:00
Joshua Daniel Franklin aa275fe010 * cygcheck.cc (usage) Add description output. 2003-04-26 21:52:03 +00:00
Christopher Faylor 229f2bb465 * Makefile.in (strace.exe): Include mingw_getopt.o in link line.
* cygcheck.cc (print_version): Update copyright.
* strace.cc (print_version): Ditto.
(main): Allow cygwin paths for -o option.
(create_child): Allow cygwin path as argv[0].
* path.cc (path.cc): Allow UNC paths.
2003-03-04 05:30:50 +00:00
Christopher Faylor 7c51881531 * mount.cc (usage): Correctly report default mode. 2002-10-19 11:41:31 +00:00
Joshua Daniel Franklin 98467dae59 Add final newlines to utils 2002-09-15 19:24:37 +00:00
Christopher Faylor b841df7954 * strace.cc (main): Make toggle a local variable. 2002-06-07 01:37:20 +00:00
Christopher Faylor 80082f1ec4 * strace.cc (toggle): New global variable.
(error): Use exit instead of ExitProcess so that stdio buffers get flushed.
(create_child): Remove command line error checking.
(dostrace): Ditto.
(dotoggle): New function.
(usage): Add entry for new option -T|--toggle.  Alphabetize.
(longopts): Add new option -T|--toggle.
(opts): Ditto.
(main): Handle new -T|--toggle option.  Move all command line checking here
from other functions.
* utils.sgml: Update section for strace.
2002-06-07 01:36:17 +00:00
Christopher Faylor ba692ae9c0 * strace.cc (version): New global variable.
(usage): Accomodate stdout output.
(print_version): New function.
2002-06-06 02:55:10 +00:00
Christopher Faylor f69af9b3d2 * strace.cc (forkdebug): Make true by default.
(attach_process): Use window pid if cygwin pid isn't available (yet).
(create_child): Use either DEBUG_ONLY_THIS_PROCESS or DEBUG_PROCESS,
exclusively.  (Suggested by Conrad.Scott@dsl.pipex.com)
2002-06-02 17:46:38 +00:00
Christopher Faylor d73f9745f1 * strace.cc (attach_process): Don't tell process to start stracing here.
(proc_child): Do it here, instead, after first debug event.  This should work
around inexplicable races with DebugActiveProcess.
(dostrace): Pass any pid argument to proc_child.
2002-05-27 01:49:08 +00:00
Christopher Faylor cf737d6b32 * strace.cc (add_child): Use calloc since new requires working libstdc++.a.
(fhandler_disk_file::fstat): Ditto for delete/free.
2002-05-18 21:05:10 +00:00
Christopher Faylor 5a909729b1 update copyright 2002-02-25 05:27:18 +00:00
Christopher Faylor ed25e9e18c * strace.cc (attach_process): Change CW_STRACE_ON to CW_STRACE_TOGGLE. 2002-02-14 21:51:32 +00:00
Christopher Faylor de6f83626a * Makefile.in (MINGW_INCLUDES): Change cygwin include.
* strace.cc: Use specific cygwin includes, as required.
(load_cygwin): New function.  Loads cygwin DLL, if necessary.
(attach_process): Attaches strace to a running process.
(dostrace): Accept pid argument.  Attach to pid if supplied.
(usage): Describe -p option.  Correct system description.
(longopts): Alphabetize.
(opts): Ditto.
(main): Ditto.  Handle -p option.
* Makefile.in (CXXFLAGS): Ensure that important settings are preserved even
when overriden by command line.
2002-01-29 02:03:32 +00:00
Christopher Faylor ad466e2f75 * Makefile.in: Build intermediate cygcheck.o to force use of MINGW_CXXFLAGS.
* cygcheck.cc (cygwin_info): Intitialize variable to quiet g++ warning.
(dump_sysinfo): Make variables unsigned to quiet g++ warnings.
* strace.cc (version_string): Rename from SCCSid.
(add_child): Remove unused variable.
(version): Use version_string.  Avoid use of fprintf.
2002-01-22 03:17:59 +00:00
Christopher Faylor 48f939e29f * cygcheck.cc (usage): Add -c description.
* cygpath.cc (usage): Alphabetize options.
* strace.cc (usage): Ditto.
2001-12-04 04:12:39 +00:00
Corinna Vinschen 33f0f67db7 * strace.cc (main): Change getopt() to getopt_long().
Add support for help and version info.
	Use new parse_mask() function for -m/--mask option.
	(longopts): Add long options structure.
	(opts): Move options string from getopts call to static var.
	(usage): Print usage information.
	(SCCSid): Version info.
	(version): New function for displaying version info.
	(parse_mask): New function supporting parsing of mnemonics,
	hex, and basic expressions in masks.
	(mnemonic2ul): New mnemonic parsing function.
	(tag_mask_mnemonic): New type.
	(mnemonic_table): New table of mnemonics for mnemonic2ul() to
	search through.
2001-11-17 09:48:09 +00:00
Egor Duda 86fbc3d90b * strace.cc (main): New option '-w'. Start traced process in separate
window. New option '-S x'. Flush buffered output every x seconds.
(create_child): Start child process in new window, when requested.
When requested, periodically flush debugging output.
2001-11-04 12:57:55 +00:00
Corinna Vinschen ce63785554 * getfacl.c: Add copyright hint.
* setfacl.c: Ditto.
        * strace.cc: Ditto.
2001-03-05 17:55:23 +00:00
Christopher Faylor eedc36cb12 Cleanup formatting on some files. Remove excessive whitespace. 2000-10-28 05:00:00 +00:00
Christopher Faylor 3c952fed3f * strace.cc (main): Add a '-b' option. 2000-10-28 00:21:41 +00:00