This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[patch] windows-nat.c: Fix offset problem in signal string handling
- From: Corinna Vinschen <vinschen at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Tue, 19 Mar 2013 16:14:36 +0100
- Subject: [patch] windows-nat.c: Fix offset problem in signal string handling
- Reply-to: gdb-patches at sourceware dot org
Hi,
another problem I found when trying the Cygwin signal handling on 64 bit
is that the address string of the context information can't be fetched,
because the pointer `p' points to the space in front of the address
string, but string_to_core_addr doesn't handle leading spaces.
The easiest way to fix this is to change the call to string_to_core_addr(p)
in handle_output_debug_string to `string_to_core_addr (p + 1)'.
Alternatively the call to string_to_core_addr could be replaced with a
call to `strtoull (p, NULL, 0)'. Since this code is only supported on
Cygwin, it's safe to assume that the strtoull function exists.
So I have two variations of the patch, I apply whatever you think is best.
Thanks,
Corinna
Version 1:
* windows-nat.c (handle_output_debug_string): Fix offset in
call to string_to_core_addr.
Index: windows-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/windows-nat.c,v
retrieving revision 1.242
diff -u -p -r1.242 windows-nat.c
--- windows-nat.c 19 Mar 2013 15:06:26 -0000 1.242
+++ windows-nat.c 19 Mar 2013 15:11:55 -0000
@@ -978,7 +978,7 @@ handle_output_debug_string (struct targe
retval = strtoul (p, &p, 0);
if (!retval)
retval = main_thread_id;
- else if ((x = (LPCVOID) string_to_core_addr (p))
+ else if ((x = (LPCVOID) string_to_core_addr (p + 1))
&& ReadProcessMemory (current_process_handle, x,
&saved_context,
__COPY_CONTEXT_SIZE, &n)
Version 2:
* windows-nat.c (handle_output_debug_string): Replace call
to string_to_core_addr with call to strtoull.
Index: windows-nat.c
===================================================================
RCS file: /cvs/src/src/gdb/windows-nat.c,v
retrieving revision 1.242
diff -u -p -r1.242 windows-nat.c
--- windows-nat.c 19 Mar 2013 15:06:26 -0000 1.242
+++ windows-nat.c 19 Mar 2013 15:13:10 -0000
@@ -978,7 +978,7 @@ handle_output_debug_string (struct targe
retval = strtoul (p, &p, 0);
if (!retval)
retval = main_thread_id;
- else if ((x = (LPCVOID) string_to_core_addr (p))
+ else if ((x = (LPCVOID) strtoull (p, NULL, 0))
&& ReadProcessMemory (current_process_handle, x,
&saved_context,
__COPY_CONTEXT_SIZE, &n)
--
Corinna Vinschen
Cygwin Maintainer
Red Hat