From: Elena Zannoni <ezannoni@redhat.com>
To: "J. Johnston" <jjohnstn@redhat.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: RFA: change for gdb/mi 790
Date: Tue, 22 Oct 2002 08:50:00 -0000 [thread overview]
Message-ID: <15797.29469.402312.460926@localhost.redhat.com> (raw)
In-Reply-To: <3DAF0107.2AB28548@redhat.com>
J. Johnston writes:
> The following patch adds support for -target-attach. It essentially copies the
> code from target.c but removes the query in the case where target execution is
> already in progress and simply performs the target_kill. I also changed the
> output message to issue ^attached, .... as requested.
>
> Eli, there is a documentation change in the mi portions of the manual.
>
> Approval to commit?
>
Sorry, no. Look at the comments by Andrew in the PR about how to
correctly fix this. It is going to be a bit more involved.
Elena
> -- Jeff J.
>
> gdb/mi/ChangeLog
>
> 2002-10-17 Jeff Johnston <jjohnstn@redhat.com>
>
> * gdbmi.texinfo (-target-attach): Add example.
> * mi-main.c (mi_cmd_target_attach): New command.
> * mi-cmds.h (mi_cmd_target_attach): New prototype.--- mi/mi-main.1.c Wed Oct 16 17:02:32 2002
> +++ mi/mi-main.c Thu Oct 17 14:08:41 2002
> @@ -40,6 +40,8 @@
> #include "regcache.h"
> #include "gdb.h"
> #include "frame.h"
> +#include "command.h" /* for dont_repeat */
> +#include "symfile.h" /* for symbol_file_add_main */
>
> #include <ctype.h>
> #include <sys/time.h>
> @@ -752,6 +754,90 @@
> mi_out_rewind (uiout);
> fputs_unfiltered ("\n", raw_stdout);
> do_exec_cleanups (ALL_CLEANUPS);
> + return MI_CMD_QUIET;
> +}
> +
> +/* Attach a program either by pid or filename */
> +enum mi_cmd_result
> +mi_cmd_target_attach (char *command, char **argv, int argc)
> +{
> + char *exec_file;
> + char *full_exec_path = NULL;
> +
> + dont_repeat (); /* Not for the faint of heart */
> +
> + if (argc == 0 || argc > 1)
> + error ("mi_cmd_target_attach: Usage -target-attach <pid> | <file>");
> +
> + if (target_has_execution)
> + target_kill (); /* we kill any existing program being debugged */
> +
> + target_attach (argv[0], FROM_TTY);
> +
> + /* Set up the "saved terminal modes" of the inferior
> + based on what modes we are starting it with. */
> + target_terminal_init ();
> +
> + /* Install inferior's terminal modes. */
> + target_terminal_inferior ();
> +
> + /* Set up execution context to know that we should return from
> + wait_for_inferior as soon as the target reports a stop. */
> + init_wait_for_inferior ();
> + clear_proceed_status ();
> +
> + /* No traps are generated when attaching to inferior under Mach 3
> + or GNU hurd. */
> +#ifndef ATTACH_NO_WAIT
> + stop_soon_quietly = 1;
> + wait_for_inferior ();
> +#endif
> +
> + /*
> + * If no exec file is yet known, try to determine it from the
> + * process itself.
> + */
> + exec_file = (char *) get_exec_file (0);
> + if (!exec_file)
> + {
> + exec_file = target_pid_to_exec_file (PIDGET (inferior_ptid));
> + if (exec_file)
> + {
> + /* It's possible we don't have a full path, but rather just a
> + filename. Some targets, such as HP-UX, don't provide the
> + full path, sigh.
> +
> + Attempt to qualify the filename against the source path.
> + (If that fails, we'll just fall back on the original
> + filename. Not much more we can do...)
> + */
> + if (!source_full_path_of (exec_file, &full_exec_path))
> + full_exec_path = savestring (exec_file, strlen (exec_file));
> +
> + exec_file_attach (full_exec_path, FROM_TTY);
> + symbol_file_add_main (full_exec_path, FROM_TTY);
> + }
> + }
> +
> +#ifdef SOLIB_ADD
> + /* Add shared library symbols from the newly attached process, if any. */
> + SOLIB_ADD ((char *) 0, FROM_TTY, ¤t_target, auto_solib_add);
> + re_enable_breakpoints_in_shlibs ();
> +#endif
> +
> + /* Take any necessary post-attaching actions for this platform.
> + */
> + target_post_attach (PIDGET (inferior_ptid));
> +
> + normal_stop ();
> +
> + if (attach_hook)
> + attach_hook ();
> +
> + fputs_unfiltered ("^attached", raw_stdout);
> + mi_out_put (uiout, raw_stdout);
> + mi_out_rewind (uiout);
> + fputs_unfiltered ("\n", raw_stdout);
> return MI_CMD_QUIET;
> }
>
> --- mi/gdbmi.0.texinfo Thu Oct 17 14:23:25 2002
> +++ mi/gdbmi.texinfo Thu Oct 17 14:22:49 2002
> @@ -3073,8 +3073,13 @@
> The corresponding @value{GDBN} command is @samp{attach}.
>
> @subsubheading Example
> -N.A.
>
> +@smallexample
> +(@value{GDBP})
> +-target-attach 4567
> +^attached,thread-id="0",frame={addr="0x08048365",func="main",args=[],file="infloop.c",line="12"}
> +(@value{GDBP})
> +@end smallexample
>
> @subheading The @code{-target-compare-sections} Command
> @findex -target-compare-sections
> --- mi/mi-cmds.0.h Wed Oct 16 17:34:22 2002
> +++ mi/mi-cmds.h Wed Oct 16 17:35:36 2002
> @@ -84,6 +84,7 @@
> extern mi_cmd_argv_ftype mi_cmd_stack_list_frames;
> extern mi_cmd_argv_ftype mi_cmd_stack_list_locals;
> extern mi_cmd_argv_ftype mi_cmd_stack_select_frame;
> +extern mi_cmd_argv_ftype mi_cmd_target_attach;
> extern mi_cmd_args_ftype mi_cmd_target_download;
> extern mi_cmd_args_ftype mi_cmd_target_select;
> extern mi_cmd_argv_ftype mi_cmd_thread_list_ids;
prev parent reply other threads:[~2002-10-22 15:50 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-10-17 11:27 J. Johnston
2002-10-19 23:14 ` Eli Zaretskii
2002-10-22 8:50 ` Elena Zannoni [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=15797.29469.402312.460926@localhost.redhat.com \
--to=ezannoni@redhat.com \
--cc=gdb-patches@sources.redhat.com \
--cc=jjohnstn@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox