When a feature XML file provides a "regnum=" tag to indicate
the registers base index, respect it, as it might not be the
same as our current number of registered entries, in particular
when there are gaps.
This fixes a bug with the "power-fpu.xml" file [*] which was
loaded at index 70 while the base register is 71. This latent
bug was exposed by commit 1ec0fbe2dd ("target/ppc: Fix
CPUClass::gdb_num_core_regs value").
[*] https://lore.kernel.org/qemu-devel/e44df309-d40d-46f0-88a8-7ac55f9a3634@fhofhammer.de/
Reported-by: Florian Hofhammer <florian.hofhammer@fhofhammer.de>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Tested-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
Link: https://lore.kernel.org/qemu-devel/20260310232045.58440-13-philmd@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
40 lines
2.5 KiB
Plaintext
40 lines
2.5 KiB
Plaintext
# See docs/devel/tracing.rst for syntax documentation.
|
|
|
|
# gdbstub.c
|
|
gdbstub_op_start(const char *device) "Starting gdbstub using device %s"
|
|
gdbstub_op_exiting(uint8_t code) "notifying exit with code=0x%02x"
|
|
gdbstub_op_continue(void) "Continuing all CPUs"
|
|
gdbstub_op_continue_cpu(int cpu_index) "Continuing CPU %d"
|
|
gdbstub_op_stepping(int cpu_index) "Stepping CPU %d"
|
|
gdbstub_op_extra_info(const char *info) "Thread extra info: %s"
|
|
gdbstub_hit_internal_error(void) "RUN_STATE_INTERNAL_ERROR"
|
|
gdbstub_hit_break(void) "RUN_STATE_DEBUG"
|
|
gdbstub_hit_paused(void) "RUN_STATE_PAUSED"
|
|
gdbstub_hit_shutdown(void) "RUN_STATE_SHUTDOWN"
|
|
gdbstub_hit_io_error(void) "RUN_STATE_IO_ERROR"
|
|
gdbstub_hit_watchdog(void) "RUN_STATE_WATCHDOG"
|
|
gdbstub_hit_unknown(int state) "Unknown run state=0x%x"
|
|
gdbstub_io_reply(const char *message) "Sent: %s"
|
|
gdbstub_io_binaryreply(size_t ofs, const char *line) "0x%04zx: %s"
|
|
gdbstub_io_command(const char *command) "Received: %s"
|
|
gdbstub_io_got_ack(void) "Got ACK"
|
|
gdbstub_io_got_unexpected(uint8_t ch) "Got 0x%02x when expecting ACK/NACK"
|
|
gdbstub_err_got_nack(void) "Got NACK, retransmitting"
|
|
gdbstub_err_garbage(uint8_t ch) "received garbage between packets: 0x%02x"
|
|
gdbstub_err_overrun(void) "command buffer overrun, dropping command"
|
|
gdbstub_err_invalid_repeat(uint8_t ch) "got invalid RLE count: 0x%02x"
|
|
gdbstub_err_invalid_rle(void) "got invalid RLE sequence"
|
|
gdbstub_err_checksum_invalid(uint8_t ch) "got invalid command checksum digit: 0x%02x"
|
|
gdbstub_err_checksum_incorrect(uint8_t expected, uint8_t got) "got command packet with incorrect checksum, expected=0x%02x, received=0x%02x"
|
|
gdbstub_err_unexpected_runpkt(uint8_t ch) "unexpected packet (0x%02x) while target running"
|
|
|
|
gdbxml_init_cpu(const char *typename, unsigned id, unsigned gdb_num_regs, unsigned gdb_num_g_regs, unsigned gdb_num_core_regs) "%s:%d regs:%u g_regs:%u core_regs:%u"
|
|
gdbxml_register_coprocessor_gap(unsigned gdb_num_regs, unsigned base_reg) "regs %u -> %u"
|
|
gdbxml_register_feature(const char *featname, const char *xmlname, unsigned base_reg, unsigned num_regs) "%s (%s) @%u +%u"
|
|
gdbxml_feature_builder_header(const char *name, const char *xmlname, int num_regs) "%s (%s) regs:%d"
|
|
gdbxml_feature_builder_content(const char *xml) "%s"
|
|
gdbxml_get_register_list(const char *featname, const char *xmlname, unsigned feat_base_reg, unsigned base_reg, const char *regname) "%s (%s) [%u,%u]:%s"
|
|
|
|
# system.c
|
|
gdbstub_hit_watchpoint(const char *type, int cpu_gdb_index, uint64_t vaddr) "Watchpoint hit, type=\"%s\" cpu=%d, vaddr=0x%" PRIx64 ""
|