From a010a6e73244a4a6a8c69eafc0ac410d9aaf64cc Mon Sep 17 00:00:00 2001 From: David Starks-Browning Date: Thu, 27 Jul 2000 22:06:27 +0000 Subject: [PATCH] Remove obsolete entries: - 'Why is gcc failing' - 'Why can't bison find bison.simple or bison.hairy?' Remove disclaimer from up-to-date entries (possibly with some minor changes): - 'How is fork() implemented?' - 'How do symbolic links work?' - 'How do I compile a Win32 executable that doesn't use Cygwin?' - 'How do I make the console window go away?' - 'Why does make complain about a "missing separator"?' - 'Why can't we redistribute Microsoft's Win32 headers?' - 'How can I debug what's going on?' - 'Can I use a system trace mechanism instead?' - 'Can I use the gdb debugger to debug programs built by VC++?' - 'Where can I find info on x86 assembly?' - 'Why not use DJGPP?' --- winsup/doc/how.texinfo | 134 ++++++++++++----------------------------- 1 file changed, 39 insertions(+), 95 deletions(-) diff --git a/winsup/doc/how.texinfo b/winsup/doc/how.texinfo index 01caf5567..115d95b0f 100644 --- a/winsup/doc/how.texinfo +++ b/winsup/doc/how.texinfo @@ -649,32 +649,28 @@ is not supported in Win 9x. @subsection How is fork() implemented? -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - Cygwin fork() essentially works like a non-copy on write version of fork() (like old Unix versions used to do). Because of this it can be a little slow. In most cases, you are better off using the spawn family of calls if possible. -Here's how fork works as of beta 18: +Here's how it works: -Parent initializes a space in the Cygwin process -table for child. Parent creates child suspended using Win32 CreateProcess -call, giving the same path it was invoked with itself. Parent -calls setjmp to save its own context and then sets a pointer to this -in the Cygwin shared memory area (shared among all Cygwin tasks). -Parent fills in the childs .data and .bss subsections by copying from -its own address space into the suspended child's address space. -Parent then starts the child. Parent waits on mutex for child to get -to safe point. Child starts and discovers if has been forked and -then longjumps using the saved jump buffer. Child sets mutex parent -is waiting on and then blocks on another mutex waiting for parent to -fill in its stack and heap. Parent notices child is in safe area, -copies stack and heap from itself into child, releases the mutex -the child is waiting on and returns from the fork call. Child wakes -from blocking on mutex, recreates any mmapped areas passed to it via -shared area and then returns from fork itself. +Parent initializes a space in the Cygwin process table for child. +Parent creates child suspended using Win32 CreateProcess call, giving +the same path it was invoked with itself. Parent calls setjmp to save +its own context and then sets a pointer to this in the Cygwin shared +memory area (shared among all Cygwin tasks). Parent fills in the childs +.data and .bss subsections by copying from its own address space into +the suspended child's address space. Parent then starts the child. +Parent waits on mutex for child to get to safe point. Child starts and +discovers if has been forked and then longjumps using the saved jump +buffer. Child sets mutex parent is waiting on and then blocks on +another mutex waiting for parent to fill in its stack and heap. Parent +notices child is in safe area, copies stack and heap from itself into +child, releases the mutex the child is waiting on and returns from the +fork call. Child wakes from blocking on mutex, recreates any mmapped +areas passed to it via shared area and then returns from fork itself. @subsection How does wildcarding (globbing) work? @@ -697,10 +693,7 @@ Beware: globbing uses @code{malloc}. If your application defines @subsection How do symbolic links work? -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -CYGWIN.DLL generates link files with a magic header. When +Cygwin generates link files with a magic header. When you open a file or directory that is a link to somewhere else, it opens the file or directory listed in the magic header. Because we don't want to have to open every referenced file to check symlink @@ -842,36 +835,12 @@ creates large executables on UNIX. If that bothers you, just use the 'strip' program, part of the binutils package. -@subsection Why is gcc failing? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -If the error is "gcc: installation problem, cannot exec `cpp': -No such file or directory", the GCC_EXEC_PREFIX environment variable -hasn't been set correctly. The current release does not need -GCC_EXEC_PREFIX set -- it should be able to find cpp regardless of the -install location. But if you have it set incorrectly, you may still -see this message. - @subsection Where is glibc? Cygwin does not provide glibc. It uses newlib instead, which provides much (but not all) of the same functionality. Porting glibc to Cygwin would be difficult. -@subsection Why can't bison find bison.simple or bison.hairy? - -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -If you are getting a warning to this effect, you need to set -the BISONLIB environment variable. The value should be the directory -in which bison.simple and bison.hairy are installed. This will be -the path leading up to and including the @code{share} directory of -the top-level of the binary distributions. For example, on some -systems, you would want to set it to @code{C:/cygnus/cygwin-b20/share}. - @subsection Why is make behaving badly? @strong{(Please note: This section has not yet been updated for the latest @@ -960,17 +929,15 @@ the file that makes the reference. @subsection How do I compile a Win32 executable that doesn't use Cygwin? -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - The -mno-cygwin flag to gcc makes gcc link against standard Microsoft DLLs instead of Cygwin. This is desirable for native Windows programs that don't need a UNIX emulation layer. -@subsection How do I make the console window go away? +This is not to be confused with 'MinGW' (Minimalist GNU for Windows), +which is a completely separate effort. That project's home page is +@file{http://www.mingw.org/index.shtml}. -@strong{(Please note: This section has not yet been updated for the latest -net release.)} +@subsection How do I make the console window go away? The default during compilation is to produce a console application. It you are writing a GUI program, you should either compile with @@ -979,24 +946,18 @@ It you are writing a GUI program, you should either compile with @subsection Why does make complain about a "missing separator"? -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - This problem usually occurs as a result of someone editing a Makefile with a text editor that replaces tab characters with spaces. Command -lines must start with tabs. +lines must start with tabs. This is not specific to Cygwin. @subsection Why can't we redistribute Microsoft's Win32 headers? -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - -Subsection 2.d.f of the `Microsoft Open Tools License agreement' looks like -it says that can not "permit further redistribution of the +Subsection 2.d.f of the `Microsoft Open Tools License agreement' looks +like it says that one may not "permit further redistribution of the Redistributables to their end users". We take this to mean that we can give them to you, but you can't give them to anyone else, which is -something that Cygnus can't agree to. Fortunately, we have our own -Win32 headers which are pretty complete. +something that Cygnus (err... Red Hat) can't agree to. Fortunately, we +have our own Win32 headers which are pretty complete. @subsection How do I link against .lib files? @@ -1223,9 +1184,6 @@ like -ltcl80 in your linker command. @subsection How can I debug what's going on? -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - You can debug your application using @code{gdb}. Make sure you compile it with the -g flag! If your application calls functions in MS dlls, gdb will complain about not being able to load debug information @@ -1235,25 +1193,20 @@ info would not be compatible with gdb). @subsection Can I use a system trace mechanism instead? -@strong{(Please note: This section has not yet been updated for the latest -net release.)} +Yes. You can use the @code{strace.exe} utility to run other cygwin +programs with various debug and trace messages enabled. For information +on using @code{strace}, see the Cygwin User's Guide or the file +@code{winsup/utils/utils.sgml}. -Yes. If you have a newer cygwin with the @code{strace.exe} program, -@code{strace} can run other cygwin programs with various debug and -trace messages enabled. For information on using the @code{strace} -program, see the Cygwin User's Guide or the file -@code{winsup/utils/utils/sgml}. - -If you have an older cygwin, you can set the STRACE -environment variable to 1, and get a whole load of debug -information on your screen whenever a Cygwin app runs. This is an -especially useful tool to use when tracking bugs down inside the -Cygwin library. STRACE can be set to different values to -achieve different amounts of granularity. You can set it to -0x10 for information about syscalls or 0x800 -for signal/process handling-related info, to name two. The strace -mechanism is well documented in the Cygwin library sources in the file -winsup/include/sys/strace.h. +Alternatively, you can set the @code{STRACE} environment variable to +@code{1}, and get a whole load of debug information on your screen +whenever a Cygwin app runs. This is an especially useful tool to use +when tracking bugs down inside the Cygwin library. @code{STRACE} can be +set to different values to achieve different amounts of granularity. +You can set it to @code{0x10} for information about syscalls or +@code{0x800} for signal/process handling-related info, to name two. The +strace mechanism is well documented in the Cygwin library sources in the +file @code{winsup/cygwin/include/sys/strace.h}. @subsection Why doesn't gdb handle signals? @@ -1325,9 +1278,6 @@ combining C++ objects. @subsection Can I use the gdb debugger to debug programs built by VC++? -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - No, not for full (high level source language) debugging. The Microsoft compilers generate a different type of debugging symbol information, which gdb does not understand. @@ -1340,9 +1290,6 @@ data types, line numbers, local variables etc. @subsection Where can I find info on x86 assembly? -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - CPU reference manuals for Intel's current chips are available in downloadable PDF form on Intel's web site: @@ -1399,9 +1346,6 @@ advantages inherent in using Cygwin. @subsection Why not use DJGPP ? -@strong{(Please note: This section has not yet been updated for the latest -net release.)} - DJGPP is a similar idea, but for DOS instead of Win32. DJGPP uses a "DOS extender" to provide a more reasonable operating interface for its applications. The Cygwin toolset doesn't have to do this since all of