Variable size for regs mask in collection list

This patch changes collection_list to allow larger register masks.

The mask is changed from an array to a vector and is initialized to
hold the maximum possible remote register number.  The stringify
method is updated to resize temp_buf if needed.

gdb/ChangeLog:
2018-08-06  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>

	* tracepoint.h (collection_list) <m_regs_mask>: Change type to
	std::vector<unsigned char>.
	* tracepoint.c (collection_list::collection_list): Remove
	m_regs_mask initializer from initializer list.  Resize
	m_regs_mask using the largest remote register number.
	(collection_list::add_remote_register): Remove size check on
	m_regs_mask.  Use at to access element.
	(collection_list::stringify): Change type of temp_buf to
	gdb::char_vector.  Update uses of temp_buf.  Resize if needed to
	stringify the register mask.  Use pack_hex_byte for the register
	mask.
This commit is contained in:
Pedro Franco de Carvalho
2018-08-06 16:24:55 -03:00
parent 4277c4b87a
commit a04b9d62a2
3 changed files with 59 additions and 24 deletions

View File

@ -292,8 +292,9 @@ public:
{ return m_computed; }
private:
/* room for up to 256 regs */
unsigned char m_regs_mask[32];
/* We need the allocator zero-initialize the mask, so we don't use
gdb::byte_vector. */
std::vector<unsigned char> m_regs_mask;
std::vector<memrange> m_memranges;