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);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.