Skip to content

Commit 7b8c152

Browse files
philmdstsquad
authored andcommitted
gdbstub: Do not use memset() on GByteArray
Introduce gdb_get_zeroes() to fill a GByteArray with zeroes. Fixes: a010bdb ("extend GByteArray to read register helpers") Signed-off-by: Philippe Mathieu-Daudé <[email protected]> Message-Id: <[email protected]> [AJB: used slightly more gliby set_size approach] Signed-off-by: Alex Bennée <[email protected]> Message-Id: <[email protected]>
1 parent bbc40fe commit 7b8c152

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

include/exec/gdbstub.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,15 @@ static inline int gdb_get_reg128(GByteArray *buf, uint64_t val_hi,
125125
return 16;
126126
}
127127

128+
static inline int gdb_get_zeroes(GByteArray *array, size_t len)
129+
{
130+
guint oldlen = array->len;
131+
g_byte_array_set_size(array, oldlen + len);
132+
memset(array->data + oldlen, 0, len);
133+
134+
return len;
135+
}
136+
128137
/**
129138
* gdb_get_reg_ptr: get pointer to start of last element
130139
* @len: length of element

target/arm/gdbstub.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ int arm_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
4747
if (gdb_has_xml) {
4848
return 0;
4949
}
50-
memset(mem_buf, 0, 12);
51-
return 12;
50+
return gdb_get_zeroes(mem_buf, 12);
5251
}
5352
switch (n) {
5453
case 24:

target/xtensa/gdbstub.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,7 @@ int xtensa_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
105105
default:
106106
qemu_log_mask(LOG_UNIMP, "%s from reg %d of unsupported size %d\n",
107107
__func__, n, reg->size);
108-
memset(mem_buf, 0, reg->size);
109-
return reg->size;
108+
return gdb_get_zeroes(mem_buf, reg->size);
110109
}
111110

112111
case xtRegisterTypeWindow: /*a*/
@@ -115,8 +114,7 @@ int xtensa_cpu_gdb_read_register(CPUState *cs, GByteArray *mem_buf, int n)
115114
default:
116115
qemu_log_mask(LOG_UNIMP, "%s from reg %d of unsupported type %d\n",
117116
__func__, n, reg->type);
118-
memset(mem_buf, 0, reg->size);
119-
return reg->size;
117+
return gdb_get_zeroes(mem_buf, reg->size);
120118
}
121119
}
122120

0 commit comments

Comments
 (0)