cvs -z3 -d:pserver:anonymous@libmigdb.cvs.sourceforge.net:/cvsroot/libmigdb co -P...
[gdbmicli.git] / src / target_man.c
1 /**[txh]********************************************************************
2
3   Copyright (c) 2004-2007 by Salvador E. Tropea.
4   Covered by the GPL license.
5
6   Module: Target manipulation.
7   Comments:
8   GDB/MI commands for the "Target Manipulation" section.@p
9
10 @<pre>
11 -target-attach                  Yes (implemented using attach)
12 -target-compare-sections        N.A. (compare-sections)
13 -target-detach                  Yes
14 -target-download                Yes
15 -target-exec-status             N.A.
16 -target-list-available-targets  N.A. (help target)
17 -target-list-current-targets    N.A. (info file among other things)
18 -target-list-parameters         N.A.
19 -target-select                  Yes
20 @</pre>
21
22 ***************************************************************************/
23
24 #include "mi_gdb.h"
25
26 /* Low level versions. */
27
28 void mi_target_select(mi_h *h, const char *type, const char *params)
29 {
30  mi_send(h,"-target-select %s %s\n",type,params);
31 }
32
33 /* Note: -target-attach isn't currently implemented :-( (gdb 6.1.1) */
34 void mi_target_attach(mi_h *h, pid_t pid)
35 {
36  mi_send(h,"attach %d\n",pid);
37 }
38
39 void mi_target_detach(mi_h *h)
40 {
41  mi_send(h,"-target-detach\n");
42 }
43
44 void mi_target_download(mi_h *h)
45 {
46  mi_send(h,"-target-download\n");
47 }
48
49 /* High level versions. */
50
51 /**[txh]********************************************************************
52
53   Description:
54   Connect to a remote gdbserver using the specified methode.
55
56   Command: -target-select
57   Return: !=0 OK
58   
59 ***************************************************************************/
60
61 int gmi_target_select(mi_h *h, const char *type, const char *params)
62 {
63  mi_target_select(h,type,params);
64  if (!mi_res_simple_connected(h))
65     return 0;
66  mi_send_target_commands(h);
67  return 1;
68 }
69
70 /**[txh]********************************************************************
71
72   Description:
73   Attach to an already running process.
74
75   Command: -target-attach [using attach]
76   Return: The frame of the current location, NULL on error.
77   
78 ***************************************************************************/
79
80 mi_frames *gmi_target_attach(mi_h *h, pid_t pid)
81 {
82  mi_target_attach(h,pid);
83  //return mi_res_simple_done(h);
84  return mi_res_frame(h);
85 }
86
87 /**[txh]********************************************************************
88
89   Description:
90   Detach from an attached process.
91
92   Command: -target-detach
93   Return: !=0 OK
94   
95 ***************************************************************************/
96
97 int gmi_target_detach(mi_h *h)
98 {
99  mi_target_detach(h);
100  return mi_res_simple_done(h);
101 }
102
103 /**[txh]********************************************************************
104
105   Description:
106   Loads the executable onto the remote target.
107
108   Command: -target-download
109   Return: !=0 OK
110   
111 ***************************************************************************/
112
113 int gmi_target_download(mi_h *h)
114 {
115  mi_target_download(h);
116  // TODO: this response have some data
117  return mi_res_simple_done(h);
118 }
119