From 86d75cf3897faeced162c4a911a90ac330a71137 Mon Sep 17 00:00:00 2001 From: Christina Schimpe Date: Tue, 6 Feb 2024 13:37:27 -0500 Subject: [PATCH] gdbserver: Add assert in x86_linux_read_description. On x86 the PTRACE_GETREGSET request is currently only used for the xstate regset. The size of the xstate regset is initialized to 0 such that it can be reset to the appropriate size once we know it is supported for the current target in x86_linux_read_description. However, this configuration would not just affect the xstate regset but any regset with PTRACE_GETREGSET request that is added in the future. The new regset would be misconfigured with the xstate regset size. To avoid this we add an assert for unsupported regsets and check explicitly for the note type of the register set. Reviewed-by: Thiago Jung Bauermann Approved-By: Luis Machado --- gdbserver/linux-x86-low.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gdbserver/linux-x86-low.cc b/gdbserver/linux-x86-low.cc index 918630d4b61..24920e71a53 100644 --- a/gdbserver/linux-x86-low.cc +++ b/gdbserver/linux-x86-low.cc @@ -894,7 +894,12 @@ x86_linux_read_description () regset++) { if (regset->get_request == PTRACE_GETREGSET) - regset->size = xsave_len; + { + if (regset->nt_type == NT_X86_XSTATE) + regset->size = xsave_len; + else + gdb_assert_not_reached ("invalid regset type."); + } else if (regset->type != GENERAL_REGS) regset->size = 0; }