Re: gdb ignoring vCont supported commands
Bill Morgan <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CAM4wpo9LC_n8dQmPGuBHK0PXkbnic96dF=MMgOf7L+TNWcAEAw@mail.gmail.com> |
On Tue, Oct 9, 2018 at 4:12 PM Pedro Alves <[email protected]> wrote: > On 10/09/2018 09:29 PM, Bill Morgan wrote: > > > > So it is now recognizing the vContSupported, but it is still sending > > vCont;s > > > > Argh, I forgot that this only really works on ARM GNU/Linux. > What is your target? > > We're missing the small infrastructure change in GDB > mentioned in the discussion I linked before. > I couldn't get the change on the other thread to work, but this has been reported before and a patch submitted to fix it. https://sourceware.org/bugzilla/show_bug.cgi?id=21272 I only needed this portion of the patch to get it working. Any chance on getting it merged to master? diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c index 53eee76926..721675266c 100644 --- a/gdb/arm-tdep.c +++ b/gdb/arm-tdep.c @@ -6221,7 +6221,24 @@ arm_get_next_pcs_addr_bits_remove (struct arm_get_next_pcs *self, static CORE_ADDR arm_get_next_pcs_syscall_next_pc (struct arm_get_next_pcs *self) { - return 0; + CORE_ADDR next_pc = 0; + CORE_ADDR pc = regcache_read_pc (self->regcache); + int is_thumb = arm_is_thumb (self->regcache); + + /* Without the knowledge of the OS (if any) we need to assume that the next + user-mode instruction is executed */ + + if (is_thumb) + { + next_pc = pc + 2; + } + + else + { + next_pc = pc + 4; + } + + return next_pc; } /* Wrapper over arm_is_thumb for use in arm_get_next_pcs. */ @@ -9384,6 +9401,7 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_sw_breakpoint_from_kind (gdbarch, arm_sw_breakpoint_from_kind); set_gdbarch_breakpoint_kind_from_current_state (gdbarch, arm_breakpoint_kind_from_current_state); + set_gdbarch_software_single_step( gdbarch, arm_software_single_step ); /* Information about registers, etc. */ set_gdbarch_sp_regnum (gdbarch, ARM_SP_REGNUM);