[PATCH v3 21/29] Share handle_exception

Tom Tromey tromey@adacore.com
Wed Apr 15 16:54:39 GMT 2020


>>>>> "Simon" == Simon Marchi <simark@simark.ca> writes:

Simon> This patch introduced some GDB-specific calls in nat/windows-nat.c.  That
Simon> file is built by gdbserver, so it breaks that build.  This is when building
Simon> on Cygwin:

For reasons I don't really understand, I can't seem to do a Cygwin
build.  (And, I have little control over the Windows machines I do have
access to, so I can't really fix the problem, whatever it is.)

So, could you try this patch?

Tom

commit f4258cb31d8f39bb3779f31f55bab3de55556497
Author: Tom Tromey <tromey@adacore.com>
Date:   Wed Apr 15 10:53:04 2020 -0600

    Fix Cygwin gdb build
    
    Simon pointed out that the windows-nat sharing series broke the Cygwin
    build.  This patch fixes the problem, by moving some globals into
    nat/windows-nat.c.
    
    gdb/ChangeLog
    2020-04-15  Tom Tromey  <tromey@adacore.com>
    
            * windows-nat.c (cygwin_exceptions, cygwin_load_start)
            (cygwin_load_end): Move to nat/windows-nat.c.
            * nat/windows-nat.h (cygwin_exceptions, cygwin_load_start)
            (cygwin_load_end): Move definitions from windows-nat.c.
            * nat/windows-nat.c (cygwin_exceptions, cygwin_load_start)
            (cygwin_load_end): Declare.

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 425c4459922..c82d8e7ff40 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2020-04-15  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (cygwin_exceptions, cygwin_load_start)
+	(cygwin_load_end): Move to nat/windows-nat.c.
+	* nat/windows-nat.h (cygwin_exceptions, cygwin_load_start)
+	(cygwin_load_end): Move definitions from windows-nat.c.
+	* nat/windows-nat.c (cygwin_exceptions, cygwin_load_start)
+	(cygwin_load_end): Declare.
+
 2016-01-20  Jon Turney  <jon.turney@dronecode.org.uk>
 
 	* windows-nat.c (windows_make_so): Warn rather than stopping with
diff --git a/gdb/nat/windows-nat.c b/gdb/nat/windows-nat.c
index cd7c1d177c6..a5e367496e8 100644
--- a/gdb/nat/windows-nat.c
+++ b/gdb/nat/windows-nat.c
@@ -45,6 +45,18 @@ EXCEPTION_RECORD siginfo_er;
 bool ignore_first_breakpoint = false;
 #endif
 
+#ifdef __CYGWIN__
+
+/* When true, break when an exception is detected in the Cygwin DLL
+   itself.  */
+bool cygwin_exceptions = false;
+
+/* The starting and ending address of the cygwin1.dll text segment.  */
+CORE_ADDR cygwin_load_start;
+CORE_ADDR cygwin_load_end;
+
+#endif /* __CYGWIN__ */
+
 /* Note that 'debug_events' must be locally defined in the relevant
    functions.  */
 #define DEBUG_EVENTS(x)	if (debug_events) debug_printf x
diff --git a/gdb/nat/windows-nat.h b/gdb/nat/windows-nat.h
index aea1519672d..0c103cb867f 100644
--- a/gdb/nat/windows-nat.h
+++ b/gdb/nat/windows-nat.h
@@ -210,6 +210,18 @@ extern EXCEPTION_RECORD siginfo_er;
 extern bool ignore_first_breakpoint;
 #endif
 
+#ifdef __CYGWIN__
+
+/* When true, break when an exception is detected in the Cygwin DLL
+   itself.  */
+extern bool cygwin_exceptions;
+
+/* The starting and ending address of the cygwin1.dll text segment.  */
+extern CORE_ADDR cygwin_load_start;
+extern CORE_ADDR cygwin_load_end;
+
+#endif /* __CYGWIN__ */
+
 /* Return the name of the DLL referenced by H at ADDRESS.  UNICODE
    determines what sort of string is read from the inferior.  Returns
    the name of the DLL, or NULL on error.  If a name is returned, it
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index 613153bfac6..a4e15ee7a32 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -162,9 +162,6 @@ static Wow64GetThreadSelectorEntry_ftype *Wow64GetThreadSelectorEntry;
 # define bad_GetModuleFileNameEx bad_GetModuleFileNameExA
 #else
 # define __PMAX	PATH_MAX
-/* The starting and ending address of the cygwin1.dll text segment.  */
-  static CORE_ADDR cygwin_load_start;
-  static CORE_ADDR cygwin_load_end;
 #   define __USEWIDE
     typedef wchar_t cygwin_buf_t;
     typedef DWORD WINAPI (GetModuleFileNameEx_ftype) (HANDLE, HMODULE,
@@ -239,9 +236,6 @@ static bool wow64_process = false;
 
 /* User options.  */
 static bool new_console = false;
-#ifdef __CYGWIN__
-static bool cygwin_exceptions = false;
-#endif
 static bool new_group = true;
 static bool debug_exec = false;		/* show execution */
 static bool debug_events = false;	/* show events from kernel */


More information about the Gdb-patches mailing list