aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorDavid Ung <davidu@nvidia.com>2015-01-16 17:22:00 -0800
committerMatthias Welwarsky <matthias.welwarsky@sysgo.com>2017-02-10 13:51:00 +0100
commitea45db5c8a3f4329e870d695cb571251b5aa3102 (patch)
tree63f0447dce2d43cb909f3d9aa62b0a217c39f650 /src/server
parent47b8cf84202bf792cf66fbfa01169e9592236b8a (diff)
server: Allow 64 address to be send over GBD server
Accept 64 bit addresses from GDB read memory packet. Also allow breakpoint/stepping addresses to take 64bit values. Change-Id: I9bf7b44affe24839cf30897c55ad17fdd29edf14 Signed-off-by: David Ung <david.ung.42@gmail.com> Signed-off-by: Matthias Welwarsky <matthias.welwarsky@sysgo.com>
Diffstat (limited to 'src/server')
-rw-r--r--src/server/gdb_server.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c
index c293f5b0..483e5510 100644
--- a/src/server/gdb_server.c
+++ b/src/server/gdb_server.c
@@ -1355,7 +1355,7 @@ static int gdb_read_memory_packet(struct connection *connection,
{
struct target *target = get_target_from_connection(connection);
char *separator;
- uint32_t addr = 0;
+ uint64_t addr = 0;
uint32_t len = 0;
uint8_t *buffer;
@@ -1366,7 +1366,7 @@ static int gdb_read_memory_packet(struct connection *connection,
/* skip command character */
packet++;
- addr = strtoul(packet, &separator, 16);
+ addr = strtoull(packet, &separator, 16);
if (*separator != ',') {
LOG_ERROR("incomplete read memory packet received, dropping connection");
@@ -1383,7 +1383,7 @@ static int gdb_read_memory_packet(struct connection *connection,
buffer = malloc(len);
- LOG_DEBUG("addr: 0x%8.8" PRIx32 ", len: 0x%8.8" PRIx32 "", addr, len);
+ LOG_DEBUG("addr: 0x%16.16" PRIx64 ", len: 0x%8.8" PRIx32 "", addr, len);
retval = target_read_buffer(target, addr, len, buffer);
@@ -1426,7 +1426,7 @@ static int gdb_write_memory_packet(struct connection *connection,
{
struct target *target = get_target_from_connection(connection);
char *separator;
- uint32_t addr = 0;
+ uint64_t addr = 0;
uint32_t len = 0;
uint8_t *buffer;
@@ -1435,7 +1435,7 @@ static int gdb_write_memory_packet(struct connection *connection,
/* skip command character */
packet++;
- addr = strtoul(packet, &separator, 16);
+ addr = strtoull(packet, &separator, 16);
if (*separator != ',') {
LOG_ERROR("incomplete write memory packet received, dropping connection");
@@ -1451,7 +1451,7 @@ static int gdb_write_memory_packet(struct connection *connection,
buffer = malloc(len);
- LOG_DEBUG("addr: 0x%8.8" PRIx32 ", len: 0x%8.8" PRIx32 "", addr, len);
+ LOG_DEBUG("addr: 0x%" PRIx64 ", len: 0x%8.8" PRIx32 "", addr, len);
if (unhexify(buffer, separator, len) != len)
LOG_ERROR("unable to decode memory packet");
@@ -1473,7 +1473,7 @@ static int gdb_write_memory_binary_packet(struct connection *connection,
{
struct target *target = get_target_from_connection(connection);
char *separator;
- uint32_t addr = 0;
+ uint64_t addr = 0;
uint32_t len = 0;
int retval = ERROR_OK;
@@ -1485,7 +1485,7 @@ static int gdb_write_memory_binary_packet(struct connection *connection,
/* skip command character */
packet++;
- addr = strtoul(packet, &separator, 16);
+ addr = strtoull(packet, &separator, 16);
if (*separator != ',') {
LOG_ERROR("incomplete write memory binary packet received, dropping connection");
@@ -1523,7 +1523,7 @@ static int gdb_write_memory_binary_packet(struct connection *connection,
}
if (len) {
- LOG_DEBUG("addr: 0x%8.8" PRIx32 ", len: 0x%8.8" PRIx32 "", addr, len);
+ LOG_DEBUG("addr: 0x%" PRIx64 ", len: 0x%8.8" PRIx32 "", addr, len);
retval = target_write_buffer(target, addr, len, (uint8_t *)separator);
if (retval != ERROR_OK)
@@ -1547,13 +1547,13 @@ static int gdb_step_continue_packet(struct connection *connection,
{
struct target *target = get_target_from_connection(connection);
int current = 0;
- uint32_t address = 0x0;
+ uint64_t address = 0x0;
int retval = ERROR_OK;
LOG_DEBUG("-");
if (packet_size > 1)
- address = strtoul(packet + 1, NULL, 16);
+ address = strtoull(packet + 1, NULL, 16);
else
current = 1;
@@ -1577,7 +1577,7 @@ static int gdb_breakpoint_watchpoint_packet(struct connection *connection,
int type;
enum breakpoint_type bp_type = BKPT_SOFT /* dummy init to avoid warning */;
enum watchpoint_rw wp_type = WPT_READ /* dummy init to avoid warning */;
- uint32_t address;
+ uint64_t address;
uint32_t size;
char *separator;
int retval;
@@ -1609,7 +1609,7 @@ static int gdb_breakpoint_watchpoint_packet(struct connection *connection,
return ERROR_SERVER_REMOTE_CLOSED;
}
- address = strtoul(separator + 1, &separator, 16);
+ address = strtoull(separator + 1, &separator, 16);
if (*separator != ',') {
LOG_ERROR("incomplete breakpoint/watchpoint packet received, dropping connection");