[PATCH 0/4] Allow larger sizes for tracepoint register masks

Pedro Franco de Carvalho
2018-06-20T21:09:22Z

Currently, the size of the register mask for tracepoint action packets
is limited to 32 bytes, due to the size of an internal array. This
patch series changes the array to a vector so that it can be sized
according to the number of registers in the arch.

The motivation for this is that I'm working on enabling additional
registers for powerpc, and there are more registers that can be
represented with the current mask size, so actions like "collect
$regs" don't work.

The series also changes the remote target to use the remote packet
size when sending tracepoint packets, because with larger masks it no
longer can be assumed that the mask will fit in a packet.

Patches 1-2 fix minor issues in remote_target::download_tracepoint, so
that patch 3 can change the method to use the remote packet
size. Patch 1 fixes an indentation error, and patch 2 fixes an error
that caused the last QTDP action packet to include the '-' trailing
indicator for additional action packets.

Patch 3 uses the remote packet size for the buffer used to build the
QTDP packets and changes all writes to this buffer to xsnprintf.

Patch 4 changes collection_list to build a variable-sized register
mask.

I also noticed that collection_list sometimes uses local register
numbers, and sometimes remote register numbers to set the bits in the
register mask, and allows pseudoregister numbers to be set in the
mask, but his issue isn't fixed in this series.

Pedro Franco de Carvalho (4):
Fix indentation in remote_target::download_tracepoint
Remove trailing '-' from the last QTDP action packet
Use get_remote_packet_size in download_tracepoint
Variable size for regs mask in collection list

gdb/remote.c | 102 ++++++++++++++++++++++++++++++++-----------------------
gdb/tracepoint.c | 28 +++++++++++----
gdb/tracepoint.h | 2 +-
3 files changed, 82 insertions(+), 50 deletions(-)

--
2.13.6