[PATCH 1/3] Handle 64bit breakpoints of WOW64 processes as SIGINT

Joel Brobecker brobecker@adacore.com
Thu Sep 24 17:22:47 GMT 2020


> > >>> diff --git a/gdb/nat/windows-nat.c b/gdb/nat/windows-nat.c
> > >>> index a277156138..2cbbc0f2cc 100644
> > >>> --- a/gdb/nat/windows-nat.c
> > >>> +++ b/gdb/nat/windows-nat.c
> > >>> @@ -243,6 +243,13 @@ handle_exception (struct target_waitstatus *ourstatus, bool debug_exceptions)
> > >>>        }
> > >>>        else if (wow64_process)
> > >>>        {
> > >>> +        /* This breakpoint exception is triggered for WOW64 processes when
> > >>> +            reaching an int3 instruction in 64bit code.
> > >>> +            gdb checks for int3 in case of SIGTRAP, this fails because
> > >>> +            Wow64GetThreadContext can only report the pc of 32bit code, and
> > >>> +            gdb lets the target process continue.
> > >>> +            So handle it as SIGINT instead, then the target is stopped
> > >>> +            unconditionally.  */
> > >>>          DEBUG_EXCEPTION_SIMPLE ("EXCEPTION_BREAKPOINT");
> > >>>          rec->ExceptionCode = DBG_CONTROL_C;
> > >>>          ourstatus->value.sig = GDB_SIGNAL_INT;
> > >>
> > >> That is fine with me, thanks.
> > >>
> > >> Just to make sure I understand, stopping a 32-bit process from a 64-bit
> > >> GDB is the only time we expect this to happen, right?
> >
> > Ok, thanks.  Please go ahead and merge.
> 
> Pushed, thanks.
> 
> I think it would be great to have this in the gdb-10-branch.
> Would that be possible?

OK for me, Hannes.

-- 
Joel


More information about the Gdb-patches mailing list