[PATCH v2] Implement debugging of WOW64 processes
Simon Marchi
simark@simark.ca
Wed Mar 4 18:15:00 GMT 2020
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
More information about the Gdb-patches
mailing list