[newlib-cygwin] cygcheck.cc: Fix debugger problem
Corinna Vinschen
corinna@sourceware.org
Sun Aug 30 19:42:00 GMT 2015
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=e3de6b0a4d7fc1f00b5961edc9e8e5a7a9e0a09e
commit e3de6b0a4d7fc1f00b5961edc9e8e5a7a9e0a09e
Author: Corinna Vinschen <corinna@vinschen.de>
Date: Sun Aug 30 21:35:23 2015 +0200
cygcheck.cc: Fix debugger problem
* cygcheck.cc (load_cygwin): Only unload cygwin DLL if not running
under a debugger. Explain why.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diff:
---
winsup/utils/ChangeLog | 5 +++++
winsup/utils/cygcheck.cc | 12 ++++++++----
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog
index 080502e..d60691a 100644
--- a/winsup/utils/ChangeLog
+++ b/winsup/utils/ChangeLog
@@ -1,5 +1,10 @@
2015-08-30 Corinna Vinschen <corinna@vinschen.de>
+ * cygcheck.cc (load_cygwin): Only unload cygwin DLL if not running
+ under a debugger. Explain why.
+
+2015-08-30 Corinna Vinschen <corinna@vinschen.de>
+
* cygcheck.cc (dump_sysinfo): Correctly handle Windows 10/Server 2016.
Add missing product types.
diff --git a/winsup/utils/cygcheck.cc b/winsup/utils/cygcheck.cc
index 1cf4875..4538e1b 100644
--- a/winsup/utils/cygcheck.cc
+++ b/winsup/utils/cygcheck.cc
@@ -2340,7 +2340,8 @@ load_cygwin (int& argc, char **&argv)
char **av = (char **) cygwin_internal (CW_ARGV);
if (av && ((uintptr_t) av != (uintptr_t) -1))
{
- /* Copy cygwin's idea of the argument list into this Window application. */
+ /* Copy cygwin's idea of the argument list into this Window
+ application. */
for (argc = 0; av[argc]; argc++)
continue;
argv = (char **) calloc (argc + 1, sizeof (char *));
@@ -2352,8 +2353,8 @@ load_cygwin (int& argc, char **&argv)
char **envp = (char **) cygwin_internal (CW_ENVP);
if (envp && ((uintptr_t) envp != (uintptr_t) -1))
{
- /* Store path and revert to this value, otherwise path gets overwritten
- by the POSIXy Cygwin variation, which breaks cygcheck.
+ /* Store path and revert to this value, otherwise path gets
+ overwritten by the POSIXy Cygwin variation, which breaks cygcheck.
Another approach would be to use the Cygwin PATH and convert it to
Win32 again. */
char *path = NULL;
@@ -2371,7 +2372,10 @@ load_cygwin (int& argc, char **&argv)
putenv (path);
}
}
- FreeLibrary (h);
+ /* GDB chokes when the DLL got unloaded and, for some reason, fails to set
+ any breakpoint after the fact. */
+ if (!IsDebuggerPresent ())
+ FreeLibrary (h);
}
int
More information about the Cygwin-cvs
mailing list