Andreas and Daniel, Thank you for the comments. From: Daniel Jacobowitz Subject: Re: [patch] "single step" atomic instruction sequences as a whole. Date: Tue, 06 Mar 2007 07:24:36 -0500 > On Tue, Mar 06, 2007 at 12:00:21PM +0100, Andreas Schwab wrote: > > > + /* Assume that the atomic sequence ends with a stwcx instruction > > > + followed by a conditional branch instruction. */ > > > + if ((insn & STWCX_MASK) != STWCX_INSTRUCTION) > > > + error (_("Tried to step over an atomic sequence of instructions but could not find the end of the sequence.")); > > > > I don't think error should be called here. It would probably be better to > > just continue with the normal single-step here. > > Maybe a (once-only) warning? It would be nice to let the user know > we're confused. That's the last thing I have wondered what to do with respect to Paul's patch. Maybe any errors should not be called in that function, because the function is just for checking if there is any sequence of instructions that should be avoided running through. I have no idea about the warning, though, it might be a help for debugging some of complecated issues. Anyway, I found that calling warning instead of error, and returning -1 (indecates that any atomic sequences are not found) after warning fulfills both suggestions. I have done with the attached. Meanwhile the things about RS6000-AIX came to me: it does not support hardware single stepping, so SOFTWARE_SINGLE_STEP_P should always return true. My patch has nothing to concern about it... I have added a new file, tm-rs6000aix.h, to undef SOFTWARE_SINGLE_STEP_P for only that target, but felt somewhat strange about the solution. I feel like adding some trick for SOFTWARE_SINGLE_STEP_P to gdbarch.c rather than undef'ing it, but no idea has come to mind for now. My best regards, -- Emi SUZUKI