This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH v2] Implement debugging of WOW64 processes
- From: Simon Marchi <simark at simark dot ca>
- To: Hannes Domani <ssbssa at yahoo dot de>, gdb-patches at sourceware dot org
- Date: Wed, 4 Mar 2020 13:15:04 -0500
- Subject: Re: [PATCH v2] Implement debugging of WOW64 processes
- References: <20200304171216.28885-1-ssbssa.ref@yahoo.de> <20200304171216.28885-1-ssbssa@yahoo.de>
On 2020-03-04 12:12 p.m., Hannes Domani via gdb-patches wrote:
> @@ -1879,6 +2110,21 @@ do_initial_windows_stuff (struct target_ops *ops, DWORD pid, int attaching)
> clear_proceed_status (0);
> init_wait_for_inferior ();
>
> +#ifdef __x86_64__
> + ignore_first_breakpoint = !attaching && wow64_process;
> +
> + if (wow64_process)
> + {
> + windows_set_context_register_offsets (i386_mappings);
> + windows_set_segment_register_p (i386_windows_segment_register_p);
> + }
> + else
> + {
> + windows_set_context_register_offsets (amd64_mappings);
> + windows_set_segment_register_p (amd64_windows_segment_register_p);
> + }
> +#endif
The other place where windows_set_context_register_offsets and
windows_set_segment_register_p are called is in _initialize_i386_windows_nat and
_initialize_amd64_windows_nat. I'm thinking that since we are calling them here,
it's no longer relevant to call them in the _initialize_* functions. I think it
would be simpler to keep just the calls here. You could probably do like you do
elsewhere:
#ifdef __x64_64__
if (!wow64_process)
{
windows_set_context_register_offsets (amd64_mappings);
windows_set_segment_register_p (amd64_windows_segment_register_p);
}
else
#else
{
windows_set_context_register_offsets (i386_mappings);
windows_set_segment_register_p (i386_windows_segment_register_p);
}
#endif
They day somebody will implement multi-inferior support for Windows, the calls
in the _initialize_* functions will have to go anyway, this it will be an inferior
property anyway (I suppose you could debug one WOW64 and one non-WOW64 process at
the same time).
Simon