something that Red Hat can't agree to. Fortunately, we
have our own Win32 headers which are pretty complete.
-@subsection How do I link against @samp{cygwin1.dll} with Visual Studio?
+@subsection How do I use @samp{cygwin1.dll} with Visual Studio or MinGW?
-To my knowledge, none of the Cygwin developers have done this, but we
-have this report from the mailing list that it can be done this way:
+If you want to load the DLL dynamically, read
+@code{winsup/cygwin/how-cygtls-works.txt} and the sample code in
+@code{winsup/testsuite/cygload} to understand how this works.
+The short version is:
+
+@enumerate
+@item Make sure you have 4K of scratch space at the bottom of your stack.
+@item Invoke @code{cygwin_dll_init()}:
+@example
+HMODULE h = LoadLibrary("cygwin1.dll");
+void (*init)() = GetProcAddress(h, "cygwin_dll_init");
+init();
+@end example
+@end enumerate
+
+If you want to link statically from Visual Studio, to my knowledge
+none of the Cygwin developers have done this, but we have this report
+from the mailing list that it can be done this way:
@enumerate
@item Use the impdef program to generate a .def file for the cygwin1.dll
Thanks to Alastair Growcott (alastair dot growcott at bakbone dot co
dot uk) for this tip.
-@subsection How do I load @samp{cygwin1.dll} dynamically from a Visual Studio or MinGW application?
-
-Read @code{how-cygtls-works.txt} and the sample code in
-@code{winsup/testsuite/cygload} if you want to understand how this works.
-The short version is:
-
-@enumerate
-@item Make sure you have 4K of scratch space at the bottom of your stack.
-@item Invoke @code{cygwin_dll_init()}:
-@example
-HMODULE h = LoadLibrary("cygwin1.dll");
-void (*init)() = GetProcAddress(h, "cygwin_dll_init");
-init();
-@end example
-@end enumerate
-
@subsection How do I link against a @samp{.lib} file?
If your @samp{.lib} file is a normal static or import library with
the system-wide table if a path is mounted in both. This includes the
setting of the cygdrive prefix.</para>
-<para>Since Windows uses drive letters instead of a single filesystem
-root, the POSIX root <filename>/</filename> must be set to a directory
-in the Windows file system using the <command>mount</command> command.
-Without a <filename>/</filename> mount, Cygwin processes cannot
-distinguish between the Windows CurrentDrive and SystemDrive.
+<para>The <command>mount</command> command can set the POSIX root
+<filename>/</filename> to any directory in the Windows file system.
+In absence of such a mount, Cygwin maps <filename>/</filename> to the
+root of the current Windows working directory (for example,
+<filename>H:\</filename> or <filename>\\computer\share</filename>).
+Normally Cygwin's <command>setup.exe</command> creates the initial
+mount point for the POSIX root.
</para>
<para>Whenever Cygwin generates a Win32 path from a POSIX one, it uses