The test in TestTaskObserverInstructionAndCode adds an Instruction and Code
observer, steps, deletes both and adds a new Code observer. This crashes the
tracee as soon as it is resumed.
Try tracing the program counter each time the program is resumed and confirm
that it is pointing at the correct instruction.
On the i386, for a breakpoint, the instruction pointer is +1 the required value,
for complex combinations of PT_STEP and hitting a breakpoint, that gets complex.
single-stepping a breakpoint advances the pc; presumably though it should be
treated as though the breakpoint was hit with a continue - the pc needs to be
2007-01-15 Mark Wielaard <email@example.com>
Fixes bug #3676
* Breakpoint.java (stepDone): Only set if still installed.
(isInstalled): new method.
* IsaIA32.java (isTaskStepped): Reset flag.
* IsaX8664.java (isTaskStepped): Likewise.
* LinuxIa32On64.java (LinuxIa32On64): Install IndirectRegisters for
d0 till d7.
* LinuxPtraceTaskState.java (Running.sendContinue): Rewritten to take
breakpoints into account.
(Running.handleStoppedEvent): Fix log message. Call sendContinue()
on new state.
(running, syscallRunning, inSyscallRunning, inSyscallRunningTraced):
Now have type Running.
(BlockedSignal.handleUnblock): Call sendContinue() on new state.
* TestTaskObserverInstruction.java: Don't test Isa.isTaskStepped().
* TestTaskObserverInstructionAndCode.java: Enable.