Page MenuHomeFreeBSD

D12684.diff
No OneTemporary

D12684.diff

Index: head/sys/gdb/gdb_main.c
===================================================================
--- head/sys/gdb/gdb_main.c
+++ head/sys/gdb/gdb_main.c
@@ -94,6 +94,33 @@
return (cur_pri);
}
+static void
+gdb_do_mem_search(void)
+{
+ size_t patlen;
+ intmax_t addr, size;
+ const unsigned char *found;
+
+ if (gdb_rx_varhex(&addr) || gdb_rx_char() != ';' ||
+ gdb_rx_varhex(&size) || gdb_rx_char() != ';' ||
+ gdb_rx_bindata(gdb_bindata, sizeof(gdb_bindata), &patlen)) {
+ gdb_tx_err(EINVAL);
+ return;
+ }
+ if (gdb_search_mem((char *)(uintptr_t)addr, size, gdb_bindata,
+ patlen, &found)) {
+ if (found == 0ULL)
+ gdb_tx_begin('0');
+ else {
+ gdb_tx_begin('1');
+ gdb_tx_char(',');
+ gdb_tx_hex((intmax_t)(uintptr_t)found, 8);
+ }
+ gdb_tx_end();
+ } else
+ gdb_tx_err(EIO);
+}
+
static int
gdb_trap(int type, int code)
{
@@ -257,27 +284,7 @@
gdb_tx_end();
}
} else if (gdb_rx_equal("Search:memory:")) {
- size_t patlen;
- intmax_t addr, size;
- const unsigned char *found;
- if (gdb_rx_varhex(&addr) || gdb_rx_char() != ';' ||
- gdb_rx_varhex(&size) || gdb_rx_char() != ';' ||
- gdb_rx_bindata(gdb_bindata, sizeof(gdb_bindata), &patlen)) {
- gdb_tx_err(EINVAL);
- break;
- }
- if (gdb_search_mem((char *)(uintptr_t)addr, size, gdb_bindata, patlen, &found)) {
- if (found == 0ULL)
- gdb_tx_begin('0');
- else {
- gdb_tx_begin('1');
- gdb_tx_char(',');
- gdb_tx_hex((intmax_t)(uintptr_t)found, 8);
- }
- gdb_tx_end();
- } else
- gdb_tx_err(EIO);
- break;
+ gdb_do_mem_search();
} else if (!gdb_cpu_query())
gdb_tx_empty();
break;

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 22, 3:34 AM (15 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25893773
Default Alt Text
D12684.diff (1 KB)

Event Timeline