aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver/remote-utils.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2002-04-09 21:17:45 +0000
committerDaniel Jacobowitz <drow@false.org>2002-04-09 21:17:45 +0000
commitce3a066d936533891c43cf478996268b40cb2cac (patch)
tree34943e6a1ad694b9b5d817d32c2035191994600e /gdb/gdbserver/remote-utils.c
parent0729219dab3a669a294ea00f471fe18c4ba65d79 (diff)
downloadgdb-ce3a066d936533891c43cf478996268b40cb2cac.zip
gdb-ce3a066d936533891c43cf478996268b40cb2cac.tar.gz
gdb-ce3a066d936533891c43cf478996268b40cb2cac.tar.bz2
2002-04-09 Daniel Jacobowitz <drow@mvista.com>
* gdbserver/inferiors.c: New file. * gdbserver/target.c: New file. * gdbserver/target.h: New file. * gdbserver/Makefile.in: Add target.o and inferiors.o. Update dependencies. * gdbserver/linux-low.c (inferior_pid): New static variable, moved from server.c. (linux_create_inferior): Renamed from create_inferior. Call add_inferior. Return 0 on success instead of a PID. (linux_attach): Renamed from myattach. (linux_kill): Renamed from kill_inferior. Call clear_inferiors (). (linux_thread_alive): Renamed from mythread_alive. (linux_wait): Renamed from mywait. Call clear_inferiors () if the child dies. (linux_resume): Renamed from myresume. Add missing ``return 0''. (regsets_store_inferior_registers): Correct error message. Add missing ``return 0''. (linux_fetch_registers): Renamed from fetch_inferior_registers. (linux_store_registers): Renamed from store_inferior_registers. (linux_read_memory): Renamed from read_inferior_memory. (linux_write_memory): Renamed from write_inferior_memory. (linux_target_ops): New structure. (initialize_low): Call set_target_ops (). * gdbserver/remote-utils.c (unhexify): New function. (hexify): New function. (input_interrupt): Send signals to ``signal_pid''. * gdbserver/server.c (inferior_pid): Remove. (start_inferior): Update create_inferior call. (attach_inferior): Call add_inferior. (handle_query): New function. (main): Call handle_query for `q' packets. * gdbserver/server.h: Include "target.h". Remove obsolete prototypes. Add prototypes for "inferiors.c", "target.c", hexify, and unhexify.
Diffstat (limited to 'gdb/gdbserver/remote-utils.c')
-rw-r--r--gdb/gdbserver/remote-utils.c39
1 files changed, 38 insertions, 1 deletions
diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c
index edfcace..c61f1e0 100644
--- a/gdb/gdbserver/remote-utils.c
+++ b/gdb/gdbserver/remote-utils.c
@@ -186,6 +186,25 @@ fromhex (int a)
return 0;
}
+int
+unhexify (char *bin, const char *hex, int count)
+{
+ int i;
+
+ for (i = 0; i < count; i++)
+ {
+ if (hex[0] == 0 || hex[1] == 0)
+ {
+ /* Hex string is short, or of uneven length.
+ Return the count that has been converted so far. */
+ return i;
+ }
+ *bin++ = fromhex (hex[0]) * 16 + fromhex (hex[1]);
+ hex += 2;
+ }
+ return i;
+}
+
/* Convert number NIB to a hex digit. */
static int
@@ -197,6 +216,24 @@ tohex (int nib)
return 'a' + nib - 10;
}
+int
+hexify (char *hex, const char *bin, int count)
+{
+ int i;
+
+ /* May use a length, or a nul-terminated string as input. */
+ if (count == 0)
+ count = strlen (bin);
+
+ for (i = 0; i < count; i++)
+ {
+ *hex++ = tohex ((*bin >> 4) & 0xf);
+ *hex++ = tohex (*bin++ & 0xf);
+ }
+ *hex = 0;
+ return i;
+}
+
/* Send a packet to the remote machine, with error checking.
The data of the packet is in BUF. Returns >= 0 on success, -1 otherwise. */
@@ -292,7 +329,7 @@ input_interrupt (int unused)
return;
}
- kill (inferior_pid, SIGINT);
+ kill (signal_pid, SIGINT);
}
}