[pushed] Re: [PATCH 0/8] Allow making GDB not automatically connect to the native target (and add "target native").

Pedro Alves
2014-05-21T17:57:24Z

I've pushed this in now.

Pedro Alves

On 03/17/2014 03:22 PM, Pedro Alves wrote:
> Sometimes it's useful to be able to disable the automatic connection
> to the native target. E.g., sometimes GDB disconnects from the
> extended-remote target I was debugging, without me noticing it, and
> then I do "run". That starts the program locally, and only after a
> little head scratch session do I figure out the program is running
> locally instead of remotely as intended. Same thing with "attach",
> "info os", etc.
>
> With this series, we now can have this instead:
>
> (gdb) set auto-connect-native-target off
> (gdb) target extended-remote :9999
> ...
> *gdb disconnects*
> (gdb) run
> Don't know how to run. Try "help target".
>
> To still be able to connect to the native target with
> auto-connect-native-target set to off, I've renamed all native targets
> to "target native", and made "target native" work instead of erroring
> out as today.
>
> E.g., before, on GNU/Linux and most native targets, the native target
> is called "child", and trying to open it yields:
>
> (gdb) target child
> Use the "run" command to start a child process.
>
> After the series we get:
>
> (gdb) target native
> Done. Use the "run" command to start a process.
> (gdb) maint print target-stack
> The current target stack is:
> - native (Native process)
> - exec (Local exec file)
> - None (None)
> (gdb) run
> Starting program: ./a.out
> ...
>
> I've also wanted this for the testsuite, when running against the
> native-extended-gdbserver.exp board (runs against gdbserver in
> extended-remote mode). With that board, it's always a bug to launch a
> program with the native target. Turns out we still have one such case
> this series catches:
>
> (gdb) break main
> Breakpoint 1 at 0x4009e5: file ../../../src/gdb/testsuite/gdb.base/coremaker.c, line 138.
> (gdb) run
> Don't know how to run. Try "help target".
> (gdb) FAIL: gdb.base/corefile.exp: run: with core
>
> For convenience, I've also put this at:
> git@github.com:palves/gdb.git target_native_v1
>
> Pedro Alves (8):
> Rename "target djgpp" -> "target native"
> Rename "target darwin-child" -> "target native"
> Rename "target GNU" -> "target native"
> Windows: Rename "target child" -> "target native"
> nto-procfs.c: Add "target native".
> go32-nat.c: Don't override to_open.
> NEWS: Mention native target renames.
> Allow making GDB not automatically connect to the native target.
>
> gdb/NEWS | 21 +++
> gdb/darwin-nat.c | 10 +-
> gdb/doc/gdb.texinfo | 58 ++++++
> gdb/gnu-nat.c | 8 +-
> gdb/go32-nat.c | 16 +-
> gdb/inf-child.c | 62 +++++-
> gdb/inf-child.h | 11 ++
> gdb/inf-ptrace.c | 6 +-
> gdb/inf-ttrace.c | 10 +-
> gdb/linux-nat.c | 8 +
> gdb/nto-procfs.c | 97 +++++++---
> gdb/procfs.c | 13 +-
> gdb/target.c | 48 ++++-
> gdb/testsuite/boards/native-extended-gdbserver.exp | 2 +
> .../gdb.base/auto-connect-native-target.c | 23 +++
> .../gdb.base/auto-connect-native-target.exp | 209 +++++++++++++++++++++
> gdb/windows-nat.c | 10 +-
> 17 files changed, 531 insertions(+), 81 deletions(-)
> create mode 100644 gdb/testsuite/gdb.base/auto-connect-native-target.c
> create mode 100644 gdb/testsuite/gdb.base/auto-connect-native-target.exp
>

--
Pedro Alves