This is an update of Jim Blandy's patch described here: [Stepping off breakpoints in non-stop debugging mode] http://sourceware.org/ml/gdb/2007-12/msg00064.html The differences to the earlier patch are: - Enable displaced stepping on x86-pc-linux-gnu instead of on all x86 targets, for two reasons. 1) x86_64 was inheriting the setting, which meant it broke because we don't handle any x86_64 specific instructions or modes. 2) We found that the choice of the a few bytes off of the entry point for scratchspace breaks on the Ericsson OS we are also implementing non-stop for. It is reasonable to think that is can break on other targets too. Since this is needed for non-stop only, it can be switch on on other targets on a need basis. OTOH, the Ericsson OS doesn't really need this, since in that case the thread specific breakpoints are handled on the target/stub side. - In non-stop mode, we can have more than one thread stepping over a breakpoint. Since the current implementation exposes only one scratch space for the whole process, we needed to serialize the stepping over breakpoints. If/when a target exposes a scratchspace per thread, we can add a gdbarch method/property to enable/disable the serialization. - There was still one place in the earlier version where we were still removing breakpoints from the target. There should be none in this version. - Added "maint set can-use-displaced-stepping" -- default on, and "set debug displaced" commands. Documented them. - Really tested with non-stop mode this time. This patch applies on top of Vladimir's "breakpoints always inserted" patch. Tested on x86-pc-linux-gnu and x86_64-unknown-linux-gnu to ensure nothing broke there. Does it look OK to apply after Vlad's patch has gone in? -- Pedro Alves