diff options
Diffstat (limited to 'gdb/python')
-rw-r--r-- | gdb/python/py-inferior.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/gdb/python/py-inferior.c b/gdb/python/py-inferior.c index dbc197e05be..c506ccd32fe 100644 --- a/gdb/python/py-inferior.c +++ b/gdb/python/py-inferior.c @@ -505,7 +505,7 @@ static PyObject * infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw) { CORE_ADDR addr, length; - void *buffer = NULL; + gdb_byte *buffer = NULL; membuf_object *membuf_obj; PyObject *addr_obj, *length_obj, *result; static char *keywords[] = { "address", "length", NULL }; @@ -520,7 +520,7 @@ infpy_read_memory (PyObject *self, PyObject *args, PyObject *kw) TRY { - buffer = xmalloc (length); + buffer = (gdb_byte *) xmalloc (length); read_memory (addr, buffer, length); } @@ -564,7 +564,7 @@ infpy_write_memory (PyObject *self, PyObject *args, PyObject *kw) { struct gdb_exception except = exception_none; Py_ssize_t buf_len; - const char *buffer; + const gdb_byte *buffer; CORE_ADDR addr, length; PyObject *addr_obj, *length_obj = NULL; static char *keywords[] = { "address", "buffer", "length", NULL }; @@ -576,13 +576,17 @@ infpy_write_memory (PyObject *self, PyObject *args, PyObject *kw) &length_obj)) return NULL; - buffer = pybuf.buf; + buffer = (const gdb_byte *) pybuf.buf; buf_len = pybuf.len; #else + const void *vbuffer; + if (! PyArg_ParseTupleAndKeywords (args, kw, "Os#|O", keywords, &addr_obj, &buffer, &buf_len, &length_obj)) return NULL; + + buffer = (const gdb_byte *) buffer; #endif if (get_addr_from_python (addr_obj, &addr) < 0) @@ -595,7 +599,7 @@ infpy_write_memory (PyObject *self, PyObject *args, PyObject *kw) TRY { - write_memory_with_notification (addr, (gdb_byte *) buffer, length); + write_memory_with_notification (addr, buffer, length); } CATCH (ex, RETURN_MASK_ALL) { @@ -717,7 +721,7 @@ infpy_search_memory (PyObject *self, PyObject *args, PyObject *kw) static char *keywords[] = { "address", "length", "pattern", NULL }; PyObject *start_addr_obj, *length_obj; Py_ssize_t pattern_size; - const void *buffer; + const gdb_byte *buffer; CORE_ADDR found_addr; int found = 0; #ifdef IS_PY3K @@ -728,10 +732,11 @@ infpy_search_memory (PyObject *self, PyObject *args, PyObject *kw) &pybuf)) return NULL; - buffer = pybuf.buf; + buffer = (const gdb_byte *) pybuf.buf; pattern_size = pybuf.len; #else PyObject *pattern; + const void *vbuffer; if (! PyArg_ParseTupleAndKeywords (args, kw, "OOO", keywords, &start_addr_obj, &length_obj, @@ -746,8 +751,10 @@ infpy_search_memory (PyObject *self, PyObject *args, PyObject *kw) return NULL; } - if (PyObject_AsReadBuffer (pattern, &buffer, &pattern_size) == -1) + if (PyObject_AsReadBuffer (pattern, &vbuffer, &pattern_size) == -1) return NULL; + + buffer = (const gdb_byte *) vbuffer; #endif if (get_addr_from_python (start_addr_obj, &start_addr) < 0) |