}
extern "C" void
-process_get_gen_hook (struct gdbserv *gdbserv)
+process_rcmd_hook (struct gdbserv *gdbserv, const char* cmd, int sizeof_cmd)
{
gdb* g = static_cast<gdb*> (gdbserv_target_data (gdbserv));
- return g->process_get_gen ();
+ g->process_rcmd (cmd, sizeof_cmd);
}
extern "C" void
}
extern "C" void
+process_get_gen_hook (struct gdbserv *gdbserv)
+{
+ gdb* g = static_cast<gdb*> (gdbserv_target_data (gdbserv));
+ return g->process_get_gen ();
+}
+
+extern "C" void
process_set_args_hook (struct gdbserv *gdbserv)
{
gdb* g = static_cast<gdb*> (gdbserv_target_data (gdbserv));
}
+
+
// ----------------------------------------------------------------------------
// Implementations for base class.
assert (gdbtarget != 0);
memset (gdbtarget, 0, sizeof (*gdbtarget)); // XXX: needed?
+ gdbtarget->process_rcmd = process_rcmd_hook;
gdbtarget->process_get_gen = process_get_gen_hook;
gdbtarget->process_set_gen = process_set_gen_hook;
gdbtarget->process_set_args = process_set_args_hook;
void
+gdb::process_rcmd (const char *cmd, int sizeof_cmd)
+{
+ string command = string (cmd, sizeof_cmd);
+ vector<string> tokens = sidutil::tokenize (command, " ");
+
+ if (trace_gdbsid)
+ cerr << "process_rcmd " << command << endl;
+
+ if (tokens.size() >= 1 &&
+ tokens[0] == "set" &&
+ this->cfgroot != 0)
+ {
+ // pass command string straight through to cfgroot
+ component::status s = this->cfgroot->set_attribute_value ("config-line!", command);
+ if (s != component::ok)
+ gdbserv_output_string (gdbserv, "E02");
+ else
+ gdbserv_output_string (gdbserv, "OK");
+
+ return;
+ }
+
+ gdbserv_output_string (gdbserv, "E01");
+}
+
+
+void
gdb::process_get_gen ()
{
}
cpu = 0;
gloss = 0;
+ cfgroot = 0;
+ add_uni_relation ("cfgroot", & cfgroot);
add_uni_relation ("cpu", & cpu);
add_uni_relation ("gloss", & gloss);
add_multi_relation ("target-schedulers", & target_schedulers);
output_pin remote_tx_pin;
// cpu/gloss<->gdb connections
+ component* cfgroot;
component* cpu;
component* gloss;
input_pin cpu_trap_code_pin;
void gdbsid_client_write (const unsigned char* ch, unsigned len);
// gdbserv<->gdb callback hooks
struct gdbserv_target* gdbsid_target_attach (struct gdbserv *gdbserv);
+ void process_rcmd (const char *cmd, int sizeof_cmd);
void process_get_gen ();
void process_set_gen ();
void process_set_args ();