Re: Powerpc and software single step

Jimi Xenidis
2003-08-19T22:32:41Z

>>>>> "DJ" == Daniel Jacobowitz <drow@mvista.com> writes:

DJ> On Tue, Aug 19, 2003 at 10:55:13AM -0700, Kevin Buettner wrote:

>> 2) Why is ``ppc_linux_single_step_mode'' an extern in tm-linux.h? I
>> would really prefer that it be local to ppc-linux-tdep.c. If
>> there's some compelling reason for it to not be local, then we can
>> discuss adding it to ppc-tdep.h.

DJ> Could we do this slightly differently? SOFTWARE_SINGLE_STEP_P is used
DJ> in two non-platform-specific files: infptrace.c for a sanity
DJ> check,
This sanity check is wierd, does it expect PT_STEP to be defined _and_
not supported?

DJ> Why not add a hook to check there which lets the user use software
DJ> single step? It'll require playing with the target macros; we'd need
DJ> something like:
DJ> SOFTWARE_SINGLE_STEP - perform software single step
DJ> SOFTWARE_SINGLE_STEP_P - SOFTWARE_SINGLE_STEP available
DJ> SOFTWARE_SINGLE_STEP_ONLY_P - no hardware singlestep available
DJ> (check that in infptrace instead of SOFTWARE_SINGLE_STEP_P?)

I believe that this increases the complexity of the solution.
On first inspection it looks like the proper solution is simply
abstracting single step and let the code do the appropriate
thing.. but that could easily break older targets that are not
actively maintained, but I yield to senior heads on this.

My first attempt was to drag ppc/rs6000 into the gdbarch world and
drop the #defines all together. However, the test (_P) rotuine tests
a function pointer and it was not readily apparent how to have a set
command set a function pointer or actually run code to do so. Perhaps
pairing it with a gdbarch boolean?

-JX

BTW: since generating the patch I have discovered that the
add_set_cmd() should actually be using var_boolean.