This is the mail archive of the gdb@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: How to configure GDB for software single-stepping on an ARM remote stub


On 05/31/2012 11:02 AM, Jonas Zaddach wrote:

> Hi,
> 
> I have written a remote stub for some ARM hardware that supports just
> memory breakpoints (the device does not have a hardware debugging
> unit). I figured out that I need single-stepping to go around
> breakpoints, 


Or more fundamentally, for all stepping, right?

> and that there is support for software single-stepping in
> the code ... but I have no idea on how to tell GDB that I want
> software single-stepping on my target. Can you give me a hint how to
> do it or where to look for documentation?


Unfortunately, GDB is not smart enough to figure out the target can't
single-step, and that it needs to do it itself with software
single-stepping.
The current way is that GDB hardcodes knowledge of when does the target
need it; it depends on architecture, for example, on ARM and MIPS, gdb
assumes the target can step, and then knows that if the target is running
Linux, it needs software stepping.  On other archs, knowing that no chip
was or will be built with hardware debugging smarts, GDB always uses
software stepping.  The simplest is to use a hack like below to force your
GDB to assume software stepping is necessary.  The best would be to make
GDB smarter.

 gdb/arm-tdep.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c
index df5dea7..829cb5c 100644
--- a/gdb/arm-tdep.c
+++ b/gdb/arm-tdep.c
@@ -10122,6 +10122,8 @@ arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 		      _("arm_gdbarch_init: bad byte order for float format"));
     }

+  set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
+
   /* On ARM targets char defaults to unsigned.  */
   set_gdbarch_char_signed (gdbarch, 0);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]