diff options
Diffstat (limited to 'gdbserver')
92 files changed, 463 insertions, 111 deletions
diff --git a/gdbserver/.dir-locals.el b/gdbserver/.dir-locals.el index eb4edba..8228d2b 100644 --- a/gdbserver/.dir-locals.el +++ b/gdbserver/.dir-locals.el @@ -1,5 +1,5 @@ ;; Emacs settings. -;; Copyright (C) 2012-2024 Free Software Foundation, Inc. +;; Copyright (C) 2012-2025 Free Software Foundation, Inc. ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by diff --git a/gdbserver/Makefile.in b/gdbserver/Makefile.in index 491882e..dbcc18a 100644 --- a/gdbserver/Makefile.in +++ b/gdbserver/Makefile.in @@ -1,4 +1,4 @@ -# Copyright (C) 1989-2024 Free Software Foundation, Inc. +# Copyright (C) 1989-2025 Free Software Foundation, Inc. # This file is part of GDB. @@ -194,6 +194,7 @@ SFILES = \ $(srcdir)/linux-loongarch-low.cc \ $(srcdir)/linux-low.cc \ $(srcdir)/linux-m68k-low.cc \ + $(srcdir)/linux-microblaze-low.cc \ $(srcdir)/linux-mips-low.cc \ $(srcdir)/linux-or1k-low.cc \ $(srcdir)/linux-ppc-low.cc \ diff --git a/gdbserver/ax-result-types.def b/gdbserver/ax-result-types.def index 67188a7..a5cd933 100644 --- a/gdbserver/ax-result-types.def +++ b/gdbserver/ax-result-types.def @@ -1,6 +1,6 @@ /* Agent expression result types. - Copyright (C) 2023-2024 Free Software Foundation, Inc. + Copyright (C) 2023-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/ax.cc b/gdbserver/ax.cc index ff42795..567ef7f 100644 --- a/gdbserver/ax.cc +++ b/gdbserver/ax.cc @@ -1,5 +1,5 @@ /* Agent expression code for remote server. - Copyright (C) 2009-2024 Free Software Foundation, Inc. + Copyright (C) 2009-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/ax.h b/gdbserver/ax.h index 12f9569..ff8a1f5 100644 --- a/gdbserver/ax.h +++ b/gdbserver/ax.h @@ -1,5 +1,5 @@ /* Data structures and functions associated with agent expressions in GDB. - Copyright (C) 2009-2024 Free Software Foundation, Inc. + Copyright (C) 2009-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/configure.ac b/gdbserver/configure.ac index 2abe93e..bd2cac8 100644 --- a/gdbserver/configure.ac +++ b/gdbserver/configure.ac @@ -1,5 +1,5 @@ dnl Autoconf configure script for GDB server. -dnl Copyright (C) 2000-2024 Free Software Foundation, Inc. +dnl Copyright (C) 2000-2025 Free Software Foundation, Inc. dnl dnl This file is part of GDB. dnl diff --git a/gdbserver/configure.srv b/gdbserver/configure.srv index e8dc8ef..6281cda 100644 --- a/gdbserver/configure.srv +++ b/gdbserver/configure.srv @@ -169,6 +169,13 @@ case "${gdbserver_host}" in srv_linux_regsets=yes srv_linux_thread_db=yes ;; + microblaze*-*-linux*) srv_regobj="microblaze-linux.o" + srv_tgtobj="$srv_linux_obj linux-microblaze-low.o" + srv_xmlfiles="microblaze-linux.xml" + srv_xmlfiles="${srv_xmlfiles} microblaze-core.xml" + srv_linux_usrregs=yes + srv_linux_thread_db=yes + ;; mips*-*-linux*) srv_regobj="mips-linux.o" srv_regobj="${srv_regobj} mips-dsp-linux.o" srv_regobj="${srv_regobj} mips64-linux.o" diff --git a/gdbserver/debug.cc b/gdbserver/debug.cc index 3d05a76..0370608 100644 --- a/gdbserver/debug.cc +++ b/gdbserver/debug.cc @@ -1,5 +1,5 @@ /* Debugging routines for the remote server for GDB. - Copyright (C) 2014-2024 Free Software Foundation, Inc. + Copyright (C) 2014-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/debug.h b/gdbserver/debug.h index eb6f695..eec87eb 100644 --- a/gdbserver/debug.h +++ b/gdbserver/debug.h @@ -1,5 +1,5 @@ /* Debugging routines for the remote server for GDB. - Copyright (C) 2014-2024 Free Software Foundation, Inc. + Copyright (C) 2014-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/dll.cc b/gdbserver/dll.cc index f49aa56..5ce8b2b 100644 --- a/gdbserver/dll.cc +++ b/gdbserver/dll.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2024 Free Software Foundation, Inc. +/* Copyright (C) 2002-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/dll.h b/gdbserver/dll.h index e603df4..b5d9c39 100644 --- a/gdbserver/dll.h +++ b/gdbserver/dll.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1993-2024 Free Software Foundation, Inc. +/* Copyright (C) 1993-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/fork-child.cc b/gdbserver/fork-child.cc index 7e4c69b..2e960a9 100644 --- a/gdbserver/fork-child.cc +++ b/gdbserver/fork-child.cc @@ -1,5 +1,5 @@ /* Fork a Unix child process, and set up to debug it, for GDBserver. - Copyright (C) 1989-2024 Free Software Foundation, Inc. + Copyright (C) 1989-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/gdb_proc_service.h b/gdbserver/gdb_proc_service.h index fdddd1b..9a1e45c 100644 --- a/gdbserver/gdb_proc_service.h +++ b/gdbserver/gdb_proc_service.h @@ -1,5 +1,5 @@ /* <proc_service.h> replacement for systems that don't have it. - Copyright (C) 2000-2024 Free Software Foundation, Inc. + Copyright (C) 2000-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/gdbreplay.cc b/gdbserver/gdbreplay.cc index 7f19faf..44aa2fb 100644 --- a/gdbserver/gdbreplay.cc +++ b/gdbserver/gdbreplay.cc @@ -1,5 +1,5 @@ /* Replay a remote debug session logfile for GDB. - Copyright (C) 1996-2024 Free Software Foundation, Inc. + Copyright (C) 1996-2025 Free Software Foundation, Inc. Written by Fred Fish (fnf@cygnus.com) from pieces of gdbserver. This file is part of GDB. diff --git a/gdbserver/gdbthread.h b/gdbserver/gdbthread.h index d6e90b1..5e61301 100644 --- a/gdbserver/gdbthread.h +++ b/gdbserver/gdbthread.h @@ -1,5 +1,5 @@ /* Multi-thread control defs for remote server for GDB. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/hostio.cc b/gdbserver/hostio.cc index cc47d68..69729a8 100644 --- a/gdbserver/hostio.cc +++ b/gdbserver/hostio.cc @@ -1,5 +1,5 @@ /* Host file transfer support for gdbserver. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-2025 Free Software Foundation, Inc. Contributed by CodeSourcery. @@ -89,12 +89,18 @@ require_filename (char **pp, char *filename) return 0; } +template <typename T> static int -require_int (char **pp, int *value) +require_int (char **pp, T *value) { + constexpr bool is_signed = std::is_signed<T>::value; + char *p; int count, firstdigit; + /* Max count of hexadecimal digits in T (1 hex digit is 4 bits). */ + int max_count = sizeof (T) * CHAR_BIT / 4; + p = *pp; *value = 0; count = 0; @@ -111,7 +117,8 @@ require_int (char **pp, int *value) firstdigit = nib; /* Don't allow overflow. */ - if (count >= 8 || (count == 7 && firstdigit >= 0x8)) + if (count >= max_count + || (is_signed && count == (max_count - 1) && firstdigit >= 0x8)) return -1; *value = *value * 16 + nib; @@ -343,7 +350,8 @@ handle_open (char *own_buf) static void handle_pread (char *own_buf, int *new_packet_len) { - int fd, ret, len, offset, bytes_sent; + int fd, ret, len, bytes_sent; + off_t offset; char *p, *data; static int max_reply_size = -1; @@ -410,7 +418,8 @@ handle_pread (char *own_buf, int *new_packet_len) static void handle_pwrite (char *own_buf, int packet_len) { - int fd, ret, len, offset; + int fd, ret, len; + off_t offset; char *p, *data; p = own_buf + strlen ("vFile:pwrite:"); @@ -504,7 +513,48 @@ handle_stat (char *own_buf, int *new_packet_len) return; } - if (lstat (filename, &st) == -1) + if (stat (filename, &st) == -1) + { + hostio_error (own_buf); + return; + } + + host_to_fileio_stat (&st, &fst); + + bytes_sent = hostio_reply_with_data (own_buf, + (char *) &fst, sizeof (fst), + new_packet_len); + + /* If the response does not fit into a single packet, do not attempt + to return a partial response, but simply fail. */ + if (bytes_sent < sizeof (fst)) + write_enn (own_buf); +} + +static void +handle_lstat (char *own_buf, int *new_packet_len) +{ + int ret, bytes_sent; + char *p; + struct stat st; + struct fio_stat fst; + char filename[HOSTIO_PATH_MAX]; + + p = own_buf + strlen ("vFile:lstat:"); + + if (require_filename (&p, filename) + || require_end (p)) + { + hostio_packet_error (own_buf); + return; + } + + if (hostio_fs_pid != 0) + ret = the_target->multifs_lstat (hostio_fs_pid, filename, &st); + else + ret = lstat (filename, &st); + + if (ret == -1) { hostio_error (own_buf); return; @@ -641,6 +691,8 @@ handle_vFile (char *own_buf, int packet_len, int *new_packet_len) handle_fstat (own_buf, new_packet_len); else if (startswith (own_buf, "vFile:stat:")) handle_stat (own_buf, new_packet_len); + else if (startswith (own_buf, "vFile:lstat:")) + handle_lstat (own_buf, new_packet_len); else if (startswith (own_buf, "vFile:close:")) handle_close (own_buf); else if (startswith (own_buf, "vFile:unlink:")) diff --git a/gdbserver/hostio.h b/gdbserver/hostio.h index ae406ea..e8852f5 100644 --- a/gdbserver/hostio.h +++ b/gdbserver/hostio.h @@ -1,5 +1,5 @@ /* Host file transfer support for gdbserver. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/i387-fp.cc b/gdbserver/i387-fp.cc index bb7b2fc..4be0083 100644 --- a/gdbserver/i387-fp.cc +++ b/gdbserver/i387-fp.cc @@ -1,5 +1,5 @@ /* i387-specific utility functions, for the remote server for GDB. - Copyright (C) 2000-2024 Free Software Foundation, Inc. + Copyright (C) 2000-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/i387-fp.h b/gdbserver/i387-fp.h index 4ee21da..96fb66c 100644 --- a/gdbserver/i387-fp.h +++ b/gdbserver/i387-fp.h @@ -1,5 +1,5 @@ /* i387-specific utility functions, for the remote server for GDB. - Copyright (C) 2000-2024 Free Software Foundation, Inc. + Copyright (C) 2000-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/inferiors.cc b/gdbserver/inferiors.cc index 14556d3..f13c784 100644 --- a/gdbserver/inferiors.cc +++ b/gdbserver/inferiors.cc @@ -1,5 +1,5 @@ /* Inferior process information for the remote server for GDB. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-2025 Free Software Foundation, Inc. Contributed by MontaVista Software. diff --git a/gdbserver/inferiors.h b/gdbserver/inferiors.h index 3f7d80f..0578acd 100644 --- a/gdbserver/inferiors.h +++ b/gdbserver/inferiors.h @@ -1,5 +1,5 @@ /* Inferior process information for the remote server for GDB. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-aarch32-low.cc b/gdbserver/linux-aarch32-low.cc index a70cc4a..3dbb7fe 100644 --- a/gdbserver/linux-aarch32-low.cc +++ b/gdbserver/linux-aarch32-low.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-aarch32-low.h b/gdbserver/linux-aarch32-low.h index b684a5d..2cd1c04 100644 --- a/gdbserver/linux-aarch32-low.h +++ b/gdbserver/linux-aarch32-low.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995-2024 Free Software Foundation, Inc. +/* Copyright (C) 1995-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-aarch32-tdesc.cc b/gdbserver/linux-aarch32-tdesc.cc index 441fe66..675eb58 100644 --- a/gdbserver/linux-aarch32-tdesc.cc +++ b/gdbserver/linux-aarch32-tdesc.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2019-2024 Free Software Foundation, Inc. +/* Copyright (C) 2019-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-aarch32-tdesc.h b/gdbserver/linux-aarch32-tdesc.h index 173eac2..2aa74f1 100644 --- a/gdbserver/linux-aarch32-tdesc.h +++ b/gdbserver/linux-aarch32-tdesc.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2019-2024 Free Software Foundation, Inc. +/* Copyright (C) 2019-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-aarch64-ipa.cc b/gdbserver/linux-aarch64-ipa.cc index 99b7700..4a700b1 100644 --- a/gdbserver/linux-aarch64-ipa.cc +++ b/gdbserver/linux-aarch64-ipa.cc @@ -1,7 +1,7 @@ /* GNU/Linux/AArch64 specific low level interface, for the in-process agent library for GDB. - Copyright (C) 2015-2024 Free Software Foundation, Inc. + Copyright (C) 2015-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-aarch64-low.cc b/gdbserver/linux-aarch64-low.cc index 7dabd57..2eb3af6 100644 --- a/gdbserver/linux-aarch64-low.cc +++ b/gdbserver/linux-aarch64-low.cc @@ -1,7 +1,7 @@ /* GNU/Linux/AArch64 specific low level interface, for the remote server for GDB. - Copyright (C) 2009-2024 Free Software Foundation, Inc. + Copyright (C) 2009-2025 Free Software Foundation, Inc. Contributed by ARM Ltd. This file is part of GDB. diff --git a/gdbserver/linux-aarch64-tdesc.cc b/gdbserver/linux-aarch64-tdesc.cc index 52642d5..cbd049d 100644 --- a/gdbserver/linux-aarch64-tdesc.cc +++ b/gdbserver/linux-aarch64-tdesc.cc @@ -1,6 +1,6 @@ /* GNU/Linux/aarch64 specific target description, for the remote server for GDB. - Copyright (C) 2017-2024 Free Software Foundation, Inc. + Copyright (C) 2017-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-aarch64-tdesc.h b/gdbserver/linux-aarch64-tdesc.h index 4076720..5a86082 100644 --- a/gdbserver/linux-aarch64-tdesc.h +++ b/gdbserver/linux-aarch64-tdesc.h @@ -1,6 +1,6 @@ /* Low level support for aarch64, shared between gdbserver and IPA. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-amd64-ipa.cc b/gdbserver/linux-amd64-ipa.cc index 0466368..af4eb03 100644 --- a/gdbserver/linux-amd64-ipa.cc +++ b/gdbserver/linux-amd64-ipa.cc @@ -1,7 +1,7 @@ /* GNU/Linux/x86-64 specific low level interface, for the in-process agent library for GDB. - Copyright (C) 2010-2024 Free Software Foundation, Inc. + Copyright (C) 2010-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-arc-low.cc b/gdbserver/linux-arc-low.cc index 2d408bf..7d27a5b 100644 --- a/gdbserver/linux-arc-low.cc +++ b/gdbserver/linux-arc-low.cc @@ -1,6 +1,6 @@ /* Target dependent code for the remote server for GNU/Linux ARC. - Copyright 2020-2024 Free Software Foundation, Inc. + Copyright 2020-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-arm-low.cc b/gdbserver/linux-arm-low.cc index 7688691..f4870ee 100644 --- a/gdbserver/linux-arm-low.cc +++ b/gdbserver/linux-arm-low.cc @@ -1,5 +1,5 @@ /* GNU/Linux/ARM specific low level interface, for the remote server for GDB. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-arm-tdesc.cc b/gdbserver/linux-arm-tdesc.cc index fff2e94..2671f12 100644 --- a/gdbserver/linux-arm-tdesc.cc +++ b/gdbserver/linux-arm-tdesc.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2019-2024 Free Software Foundation, Inc. +/* Copyright (C) 2019-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-arm-tdesc.h b/gdbserver/linux-arm-tdesc.h index bf12c8f..3793947 100644 --- a/gdbserver/linux-arm-tdesc.h +++ b/gdbserver/linux-arm-tdesc.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2019-2024 Free Software Foundation, Inc. +/* Copyright (C) 2019-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-csky-low.cc b/gdbserver/linux-csky-low.cc index 18a0d15..e9de986 100644 --- a/gdbserver/linux-csky-low.cc +++ b/gdbserver/linux-csky-low.cc @@ -1,5 +1,5 @@ /* GNU/Linux/MIPS specific low level interface, for the remote server for GDB. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-i386-ipa.cc b/gdbserver/linux-i386-ipa.cc index 6dadaaf..17af6eb 100644 --- a/gdbserver/linux-i386-ipa.cc +++ b/gdbserver/linux-i386-ipa.cc @@ -1,7 +1,7 @@ /* GNU/Linux/x86 specific low level interface, for the in-process agent library for GDB. - Copyright (C) 2010-2024 Free Software Foundation, Inc. + Copyright (C) 2010-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-ia64-low.cc b/gdbserver/linux-ia64-low.cc index b7c3c64..48c5cc8 100644 --- a/gdbserver/linux-ia64-low.cc +++ b/gdbserver/linux-ia64-low.cc @@ -1,5 +1,5 @@ /* GNU/Linux/IA64 specific low level interface, for the remote server for GDB. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-loongarch-low.cc b/gdbserver/linux-loongarch-low.cc index 795b6f5..62592a5 100644 --- a/gdbserver/linux-loongarch-low.cc +++ b/gdbserver/linux-loongarch-low.cc @@ -1,6 +1,6 @@ /* GNU/Linux/LoongArch specific low level interface, for the remote server for GDB. - Copyright (C) 2022-2024 Free Software Foundation, Inc. + Copyright (C) 2022-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-low.cc b/gdbserver/linux-low.cc index 65268a6..3964270 100644 --- a/gdbserver/linux-low.cc +++ b/gdbserver/linux-low.cc @@ -1,5 +1,5 @@ /* Low level interface to ptrace, for the remote server for GDB. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-2025 Free Software Foundation, Inc. This file is part of GDB. @@ -751,7 +751,7 @@ linux_process_target::handle_extended_wait (lwp_info **orig_event_lwp, /* Set the event status. */ event_lwp->waitstatus.set_execd (make_unique_xstrdup - (linux_proc_pid_to_exec_file (event_thr->id.lwp ()))); + (pid_to_exec_file (event_thr->id.lwp ()))); /* Mark the exec status as pending. */ event_lwp->stopped = 1; @@ -6033,7 +6033,7 @@ linux_process_target::supports_pid_to_exec_file () const char * linux_process_target::pid_to_exec_file (int pid) { - return linux_proc_pid_to_exec_file (pid); + return linux_proc_pid_to_exec_file (pid, linux_ns_same (pid, LINUX_NS_MNT)); } bool @@ -6050,6 +6050,12 @@ linux_process_target::multifs_open (int pid, const char *filename, } int +linux_process_target::multifs_lstat (int pid, const char *filename, struct stat *sb) +{ + return linux_mntns_lstat (pid, filename, sb); +} + +int linux_process_target::multifs_unlink (int pid, const char *filename) { return linux_mntns_unlink (pid, filename); diff --git a/gdbserver/linux-low.h b/gdbserver/linux-low.h index 75af38d..e1c88ee 100644 --- a/gdbserver/linux-low.h +++ b/gdbserver/linux-low.h @@ -1,5 +1,5 @@ /* Internal interfaces for the GNU/Linux specific target code for gdbserver. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-2025 Free Software Foundation, Inc. This file is part of GDB. @@ -304,6 +304,8 @@ public: int multifs_open (int pid, const char *filename, int flags, mode_t mode) override; + int multifs_lstat (int pid, const char *filename, struct stat *st) override; + int multifs_unlink (int pid, const char *filename) override; ssize_t multifs_readlink (int pid, const char *filename, char *buf, diff --git a/gdbserver/linux-m68k-low.cc b/gdbserver/linux-m68k-low.cc index 8020e49..776e843 100644 --- a/gdbserver/linux-m68k-low.cc +++ b/gdbserver/linux-m68k-low.cc @@ -1,5 +1,5 @@ /* GNU/Linux/m68k specific low level interface, for the remote server for GDB. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-microblaze-low.cc b/gdbserver/linux-microblaze-low.cc new file mode 100644 index 0000000..2d97eef --- /dev/null +++ b/gdbserver/linux-microblaze-low.cc @@ -0,0 +1,245 @@ +/* GNU/Linux/Microblaze specific low level interface, for the remote server for + GDB. + Copyright (C) 1995-2025 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ + +#include "server.h" +#include "linux-low.h" + +#include "elf/common.h" +#include "nat/gdb_ptrace.h" +#include <endian.h> + +#include <asm/ptrace.h> +#include <sys/procfs.h> +#include <sys/ptrace.h> + +#include "gdb_proc_service.h" + + +static int microblaze_regmap[] = + {PT_GPR(0), PT_GPR(1), PT_GPR(2), PT_GPR(3), + PT_GPR(4), PT_GPR(5), PT_GPR(6), PT_GPR(7), + PT_GPR(8), PT_GPR(9), PT_GPR(10), PT_GPR(11), + PT_GPR(12), PT_GPR(13), PT_GPR(14), PT_GPR(15), + PT_GPR(16), PT_GPR(17), PT_GPR(18), PT_GPR(19), + PT_GPR(20), PT_GPR(21), PT_GPR(22), PT_GPR(23), + PT_GPR(24), PT_GPR(25), PT_GPR(26), PT_GPR(27), + PT_GPR(28), PT_GPR(29), PT_GPR(30), PT_GPR(31), + PT_PC, PT_MSR, PT_EAR, PT_ESR, + PT_FSR + }; + + + +class microblaze_target : public linux_process_target +{ +public: + + const regs_info *get_regs_info () override; + + const gdb_byte *sw_breakpoint_from_kind (int kind, int *size) override; + +protected: + + void low_arch_setup () override; + + bool low_cannot_fetch_register (int regno) override; + + bool low_cannot_store_register (int regno) override; + + bool low_supports_breakpoints () override; + + CORE_ADDR low_get_pc (regcache *regcache) override; + + void low_set_pc (regcache *regcache, CORE_ADDR newpc) override; + + bool low_breakpoint_at (CORE_ADDR pc) override; +}; + +/* The singleton target ops object. */ + +static microblaze_target the_microblaze_target; + +constexpr auto microblaze_num_regs + = sizeof (microblaze_regmap) / sizeof (microblaze_regmap[0]); + +/* Defined in auto-generated file microblaze-linux-generated.c. */ +void init_registers_microblaze_linux (); +extern const target_desc *tdesc_microblaze_linux; + +bool +microblaze_target::low_supports_breakpoints () +{ + return true; +} + +bool +microblaze_target::low_cannot_store_register (int regno) +{ + if (microblaze_regmap[regno] == -1 || regno == 0) + return 1; + + return 0; +} + +bool +microblaze_target::low_cannot_fetch_register (int regno) +{ + return 0; +} + +CORE_ADDR +microblaze_target::low_get_pc (regcache *regcache) +{ + unsigned long pc; + + collect_register_by_name (regcache, "rpc", &pc); + return pc; +} + +void +microblaze_target::low_set_pc (regcache *regcache, CORE_ADDR pc) +{ + unsigned long newpc = pc; + + supply_register_by_name (regcache, "rpc", &newpc); +} + +/* dbtrap insn */ +/* brki r16, 0x18; */ +static const uint32_t microblaze_breakpoint = 0xba0c0018; +#define microblaze_breakpoint_len 4 + +const gdb_byte * +microblaze_target::sw_breakpoint_from_kind (int kind, int *size) +{ + *size = microblaze_breakpoint_len; + return reinterpret_cast<const gdb_byte *> (µblaze_breakpoint); +} + +bool +microblaze_target::low_breakpoint_at (CORE_ADDR where) +{ + uint32_t insn; + + read_memory (where, (unsigned char *) &insn, 4); + /* If necessary, recognize more trap instructions here. GDB only uses the + one. */ + return insn == microblaze_breakpoint; +} + +#ifdef HAVE_PTRACE_GETREGS + +static void +microblaze_collect_ptrace_register (struct regcache *regcache, int regno, + char *buf) +{ + memset (buf, 0, sizeof (long)); + + if (__BYTE_ORDER == __LITTLE_ENDIAN) + { + collect_register (regcache, regno, buf); + } + else if (__BYTE_ORDER == __BIG_ENDIAN) + { + int size = register_size (regcache->tdesc, regno); + + if (size < sizeof (long)) + collect_register (regcache, regno, buf + sizeof (long) - size); + else + collect_register (regcache, regno, buf); + } +} + +/* Collect GPRs from REGCACHE into BUF. */ + +static void microblaze_fill_gregset (struct regcache *regcache, void *buf) +{ + int i; + + for (i = 0; i < microblaze_num_regs; i++) + microblaze_collect_ptrace_register (regcache, i, + (char *) buf + microblaze_regmap[i]); +} + +/* Supply GPRs from BUF into REGCACHE. */ + +static void +microblaze_store_gregset (struct regcache *regcache, const void *buf) +{ + int i; + + for (i = 0; i < microblaze_num_regs; i++) + supply_register (regcache, i, (char *) buf + microblaze_regmap[i]); +} + +static struct regset_info microblaze_regsets[] = { + { PTRACE_GETREGS, PTRACE_SETREGS, NT_PRSTATUS, + sizeof (elf_gregset_t), GENERAL_REGS, + microblaze_fill_gregset, microblaze_store_gregset + }, + NULL_REGSET +}; +#endif /* HAVE_PTRACE_GETREGS */ + +static struct usrregs_info microblaze_usrregs_info = + { + microblaze_num_regs, + microblaze_regmap, + }; + +#ifdef HAVE_PTRACE_GETREGS +static struct regsets_info microblaze_regsets_info = + { + microblaze_regsets, /* regsets */ + 0, /* num_regsets */ + nullptr /* disabled_regsets */ + }; +#endif /* HAVE_PTRACE_GETREGS */ + +static struct regs_info microblaze_regs_info = + { + nullptr, /* regset_bitmap */ + µblaze_usrregs_info, +#ifdef HAVE_PTRACE_GETREGS + µblaze_regsets_info +#endif /* HAVE_PTRACE_GETREGS */ + }; + +const regs_info * +microblaze_target::get_regs_info () +{ + return µblaze_regs_info; +} + +void +microblaze_target::low_arch_setup () +{ + current_process ()->tdesc = tdesc_microblaze_linux; +} + +linux_process_target *the_linux_target = &the_microblaze_target; + +void +initialize_low_arch () +{ + init_registers_microblaze_linux (); +#ifdef HAVE_PTRACE_GETREGS + initialize_regsets_info (µblaze_regsets_info); +#endif /* HAVE_PTRACE_GETREGS */ +} diff --git a/gdbserver/linux-mips-low.cc b/gdbserver/linux-mips-low.cc index fafcdef..295eb87 100644 --- a/gdbserver/linux-mips-low.cc +++ b/gdbserver/linux-mips-low.cc @@ -1,5 +1,5 @@ /* GNU/Linux/MIPS specific low level interface, for the remote server for GDB. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-or1k-low.cc b/gdbserver/linux-or1k-low.cc index 1e0fa39..a527913 100644 --- a/gdbserver/linux-or1k-low.cc +++ b/gdbserver/linux-or1k-low.cc @@ -1,5 +1,5 @@ /* GNU/Linux/OR1K specific low level interface for the GDB server. - Copyright (C) 2021-2024 Free Software Foundation, Inc. + Copyright (C) 2021-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-ppc-ipa.cc b/gdbserver/linux-ppc-ipa.cc index cbbfcfa..66e3940 100644 --- a/gdbserver/linux-ppc-ipa.cc +++ b/gdbserver/linux-ppc-ipa.cc @@ -1,7 +1,7 @@ /* GNU/Linux/PowerPC specific low level interface, for the in-process agent library for GDB. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-ppc-low.cc b/gdbserver/linux-ppc-low.cc index 4fd0ebe..dc8a48b 100644 --- a/gdbserver/linux-ppc-low.cc +++ b/gdbserver/linux-ppc-low.cc @@ -1,6 +1,6 @@ /* GNU/Linux/PowerPC specific low level interface, for the remote server for GDB. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-ppc-tdesc-init.h b/gdbserver/linux-ppc-tdesc-init.h index b64423b..1c18b2a 100644 --- a/gdbserver/linux-ppc-tdesc-init.h +++ b/gdbserver/linux-ppc-tdesc-init.h @@ -1,6 +1,6 @@ /* Low level support for ppc, shared between gdbserver and IPA. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-riscv-low.cc b/gdbserver/linux-riscv-low.cc index 44c805bb..8c742f4 100644 --- a/gdbserver/linux-riscv-low.cc +++ b/gdbserver/linux-riscv-low.cc @@ -1,6 +1,6 @@ /* GNU/Linux/RISC-V specific low level interface, for the remote server for GDB. - Copyright (C) 2020-2024 Free Software Foundation, Inc. + Copyright (C) 2020-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-s390-ipa.cc b/gdbserver/linux-s390-ipa.cc index 55ce4a4..c547490 100644 --- a/gdbserver/linux-s390-ipa.cc +++ b/gdbserver/linux-s390-ipa.cc @@ -1,7 +1,7 @@ /* GNU/Linux S/390 specific low level interface, for the in-process agent library for GDB. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-s390-low.cc b/gdbserver/linux-s390-low.cc index cd874f6..29bdf58 100644 --- a/gdbserver/linux-s390-low.cc +++ b/gdbserver/linux-s390-low.cc @@ -1,6 +1,6 @@ /* GNU/Linux S/390 specific low level interface, for the remote server for GDB. - Copyright (C) 2001-2024 Free Software Foundation, Inc. + Copyright (C) 2001-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-s390-tdesc.h b/gdbserver/linux-s390-tdesc.h index b996e80..24fe550 100644 --- a/gdbserver/linux-s390-tdesc.h +++ b/gdbserver/linux-s390-tdesc.h @@ -1,6 +1,6 @@ /* Low level support for s390, shared between gdbserver and IPA. - Copyright (C) 2016-2024 Free Software Foundation, Inc. + Copyright (C) 2016-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-sh-low.cc b/gdbserver/linux-sh-low.cc index 64e6de3..f3f65df 100644 --- a/gdbserver/linux-sh-low.cc +++ b/gdbserver/linux-sh-low.cc @@ -1,5 +1,5 @@ /* GNU/Linux/SH specific low level interface, for the remote server for GDB. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-sparc-low.cc b/gdbserver/linux-sparc-low.cc index 1ad4122..be42788 100644 --- a/gdbserver/linux-sparc-low.cc +++ b/gdbserver/linux-sparc-low.cc @@ -1,5 +1,5 @@ /* Low level interface to ptrace, for the remote server for GDB. - Copyright (C) 1995-2024 Free Software Foundation, Inc. + Copyright (C) 1995-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-tic6x-low.cc b/gdbserver/linux-tic6x-low.cc index 707be2e..4400ede 100644 --- a/gdbserver/linux-tic6x-low.cc +++ b/gdbserver/linux-tic6x-low.cc @@ -1,6 +1,6 @@ /* Target dependent code for GDB on TI C6x systems. - Copyright (C) 2010-2024 Free Software Foundation, Inc. + Copyright (C) 2010-2025 Free Software Foundation, Inc. Contributed by Andrew Jenner <andrew@codesourcery.com> Contributed by Yao Qi <yao@codesourcery.com> diff --git a/gdbserver/linux-x86-low.cc b/gdbserver/linux-x86-low.cc index 6c2688d..918630d 100644 --- a/gdbserver/linux-x86-low.cc +++ b/gdbserver/linux-x86-low.cc @@ -1,6 +1,6 @@ /* GNU/Linux/x86-64 specific low level interface, for the remote server for GDB. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-x86-tdesc.cc b/gdbserver/linux-x86-tdesc.cc index 6aa5c4a..4cb0664 100644 --- a/gdbserver/linux-x86-tdesc.cc +++ b/gdbserver/linux-x86-tdesc.cc @@ -1,6 +1,6 @@ /* GNU/Linux/x86-64 specific target description, for the remote server for GDB. - Copyright (C) 2017-2024 Free Software Foundation, Inc. + Copyright (C) 2017-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/linux-xtensa-low.cc b/gdbserver/linux-xtensa-low.cc index b20b62e..27a5ed8 100644 --- a/gdbserver/linux-xtensa-low.cc +++ b/gdbserver/linux-xtensa-low.cc @@ -1,5 +1,5 @@ /* GNU/Linux/Xtensa specific low level interface, for the remote server for GDB. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/mem-break.cc b/gdbserver/mem-break.cc index 134e243..1a212ec 100644 --- a/gdbserver/mem-break.cc +++ b/gdbserver/mem-break.cc @@ -1,5 +1,5 @@ /* Memory breakpoint operations for the remote server for GDB. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-2025 Free Software Foundation, Inc. Contributed by MontaVista Software. diff --git a/gdbserver/mem-break.h b/gdbserver/mem-break.h index 12ad19a..0d3009c 100644 --- a/gdbserver/mem-break.h +++ b/gdbserver/mem-break.h @@ -1,5 +1,5 @@ /* Memory breakpoint interfaces for the remote server for GDB. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-2025 Free Software Foundation, Inc. Contributed by MontaVista Software. diff --git a/gdbserver/netbsd-aarch64-low.cc b/gdbserver/netbsd-aarch64-low.cc index 8834e0a..90f136d 100644 --- a/gdbserver/netbsd-aarch64-low.cc +++ b/gdbserver/netbsd-aarch64-low.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2020-2024 Free Software Foundation, Inc. +/* Copyright (C) 2020-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/netbsd-amd64-low.cc b/gdbserver/netbsd-amd64-low.cc index ad7cb43..c99393a 100644 --- a/gdbserver/netbsd-amd64-low.cc +++ b/gdbserver/netbsd-amd64-low.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2020-2024 Free Software Foundation, Inc. +/* Copyright (C) 2020-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/netbsd-i386-low.cc b/gdbserver/netbsd-i386-low.cc index ea6fce4..d9e2ef7 100644 --- a/gdbserver/netbsd-i386-low.cc +++ b/gdbserver/netbsd-i386-low.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2020-2024 Free Software Foundation, Inc. +/* Copyright (C) 2020-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/netbsd-low.cc b/gdbserver/netbsd-low.cc index 0c75f4b..2984b5b 100644 --- a/gdbserver/netbsd-low.cc +++ b/gdbserver/netbsd-low.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2020-2024 Free Software Foundation, Inc. +/* Copyright (C) 2020-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/netbsd-low.h b/gdbserver/netbsd-low.h index aef1ce4..a503afd 100644 --- a/gdbserver/netbsd-low.h +++ b/gdbserver/netbsd-low.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2020-2024 Free Software Foundation, Inc. +/* Copyright (C) 2020-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/notif.cc b/gdbserver/notif.cc index 60478dc..0c787fb 100644 --- a/gdbserver/notif.cc +++ b/gdbserver/notif.cc @@ -1,5 +1,5 @@ /* Notification to GDB. - Copyright (C) 1989-2024 Free Software Foundation, Inc. + Copyright (C) 1989-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/notif.h b/gdbserver/notif.h index 33b7882..50be0b8 100644 --- a/gdbserver/notif.h +++ b/gdbserver/notif.h @@ -1,5 +1,5 @@ /* Notification to GDB. - Copyright (C) 1989-2024 Free Software Foundation, Inc. + Copyright (C) 1989-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/proc-service.cc b/gdbserver/proc-service.cc index 198a6f2..9575302 100644 --- a/gdbserver/proc-service.cc +++ b/gdbserver/proc-service.cc @@ -1,5 +1,5 @@ /* libthread_db helper functions for the remote server for GDB. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-2025 Free Software Foundation, Inc. Contributed by MontaVista Software. diff --git a/gdbserver/proc-service.list b/gdbserver/proc-service.list index 1eed6e0..c6320c8 100644 --- a/gdbserver/proc-service.list +++ b/gdbserver/proc-service.list @@ -1,6 +1,6 @@ /* -Wl,--dynamic-list symbols exported for libthread_db. - Copyright (C) 2010-2024 Free Software Foundation, Inc. + Copyright (C) 2010-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/regcache.cc b/gdbserver/regcache.cc index ee0c1b3..a937a34 100644 --- a/gdbserver/regcache.cc +++ b/gdbserver/regcache.cc @@ -1,5 +1,5 @@ /* Register support routines for the remote server for GDB. - Copyright (C) 2001-2024 Free Software Foundation, Inc. + Copyright (C) 2001-2025 Free Software Foundation, Inc. This file is part of GDB. @@ -353,8 +353,7 @@ supply_register_by_name_zeroed (struct regcache *regcache, #endif /* Supply the whole register set whose contents are stored in BUF, to - REGCACHE. If BUF is NULL, all the registers' values are recorded - as unavailable. */ + REGCACHE. */ void supply_regblock (struct regcache *regcache, const void *buf) @@ -503,7 +502,7 @@ regcache::raw_compare (int regnum, const void *buf, int offset) const gdb_assert (buf != NULL); gdb::array_view<const gdb_byte> regbuf = register_data (this, regnum); - gdb_assert (offset < regbuf.size ()); + gdb_assert (offset <= regbuf.size ()); regbuf = regbuf.slice (offset); return memcmp (buf, regbuf.data (), regbuf.size ()) == 0; diff --git a/gdbserver/regcache.h b/gdbserver/regcache.h index 96d2a4d..89e801f 100644 --- a/gdbserver/regcache.h +++ b/gdbserver/regcache.h @@ -1,5 +1,5 @@ /* Register support routines for the remote server for GDB. - Copyright (C) 2001-2024 Free Software Foundation, Inc. + Copyright (C) 2001-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/remote-utils.cc b/gdbserver/remote-utils.cc index 67225c5..15f073d 100644 --- a/gdbserver/remote-utils.cc +++ b/gdbserver/remote-utils.cc @@ -1,5 +1,5 @@ /* Remote utility routines for the remote server for GDB. - Copyright (C) 1986-2024 Free Software Foundation, Inc. + Copyright (C) 1986-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/remote-utils.h b/gdbserver/remote-utils.h index 65ce604..b7a33bc 100644 --- a/gdbserver/remote-utils.h +++ b/gdbserver/remote-utils.h @@ -1,5 +1,5 @@ /* Remote utility routines for the remote server for GDB. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/server.cc b/gdbserver/server.cc index def01c1..ab69400 100644 --- a/gdbserver/server.cc +++ b/gdbserver/server.cc @@ -1,5 +1,5 @@ /* Main code for remote server for GDB. - Copyright (C) 1989-2024 Free Software Foundation, Inc. + Copyright (C) 1989-2025 Free Software Foundation, Inc. This file is part of GDB. @@ -51,6 +51,7 @@ #include "gdbsupport/scoped_restore.h" #include "gdbsupport/search.h" #include "gdbsupport/gdb_argv_vec.h" +#include "gdbsupport/remote-args.h" /* PBUFSIZ must also be at least as big as IPA_CMD_BUF_SIZE, because the client state data is passed directly to some agent @@ -2863,7 +2864,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) { char *end_buf = own_buf + strlen (own_buf); sprintf (end_buf, ";QThreadOptions=%s", - phex_nz (supported_options, sizeof (supported_options))); + phex_nz (supported_options)); } strcat (own_buf, ";QThreadEvents+"); @@ -3465,7 +3466,7 @@ handle_v_run (char *own_buf) else program_path.set (new_program_name.get ()); - program_args = construct_inferior_arguments (new_argv.get (), true); + program_args = gdb::remote_args::join (new_argv.get ()); try { @@ -4071,6 +4072,33 @@ test_memory_tagging_functions (void) && tags.size () == 5); } +/* Exercise the behavior of doing a 0-length comparison for a register in a + register buffer, which should return true. */ + +static void test_registers_raw_compare_zero_length () +{ + /* Start off with a dummy target description. */ + target_desc dummy_tdesc; + + /* Make it 8 bytes long. */ + dummy_tdesc.registers_size = 8; + + /* Add a couple dummy 32-bit registers. */ + dummy_tdesc.reg_defs.emplace_back ("r0", 0, 32); + dummy_tdesc.reg_defs.emplace_back ("r1", 32, 32); + + /* Create our dummy register cache so we can invoke the raw_compare method + we want to validate. */ + regcache dummy_regcache (&dummy_tdesc); + + /* Create a dummy byte buffer we can pass to the raw_compare method. */ + gdb_byte dummy_buffer[8]; + + /* Validate the 0-length comparison (due to the comparison offset being + equal to the length of the register) returns true. */ + SELF_CHECK (dummy_regcache.raw_compare (0, dummy_buffer, 4)); +} + } /* namespace selftests */ #endif /* GDB_SELF_TEST */ @@ -4094,6 +4122,8 @@ captured_main (int argc, char *argv[]) selftests::register_test ("remote_memory_tagging", selftests::test_memory_tagging_functions); + selftests::register_test ("test_registers_raw_compare_zero_length", + selftests::test_registers_raw_compare_zero_length); #endif current_directory = getcwd (NULL, 0); diff --git a/gdbserver/server.h b/gdbserver/server.h index e1297d4..5609584 100644 --- a/gdbserver/server.h +++ b/gdbserver/server.h @@ -1,5 +1,5 @@ /* Common definitions for remote server for GDB. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/setup.cfg b/gdbserver/setup.cfg deleted file mode 100644 index 08646b8..0000000 --- a/gdbserver/setup.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[codespell] -# Skip ChangeLogs and generated files. -skip = ChangeLog*,configure -ignore-words = gdb/contrib/codespell-ignore-words.txt diff --git a/gdbserver/symbol.cc b/gdbserver/symbol.cc index 435acc7..2807a20 100644 --- a/gdbserver/symbol.cc +++ b/gdbserver/symbol.cc @@ -1,6 +1,6 @@ /* Symbol manipulating routines for the remote server for GDB. - Copyright (C) 2014-2024 Free Software Foundation, Inc. + Copyright (C) 2014-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/target.cc b/gdbserver/target.cc index a26e159..c400174c 100644 --- a/gdbserver/target.cc +++ b/gdbserver/target.cc @@ -1,5 +1,5 @@ /* Target operations for the remote server for GDB. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-2025 Free Software Foundation, Inc. Contributed by MontaVista Software. @@ -258,7 +258,7 @@ target_pid_to_str (ptid_t ptid) else if (ptid.tid () != 0) return string_printf("Thread %d.0x%s", ptid.pid (), - phex_nz (ptid.tid (), sizeof (ULONGEST))); + phex_nz (ptid.tid ())); else if (ptid.lwp () != 0) return string_printf("LWP %d.%ld", ptid.pid (), ptid.lwp ()); @@ -773,6 +773,13 @@ process_stratum_target::multifs_open (int pid, const char *filename, } int +process_stratum_target::multifs_lstat (int pid, const char *filename, + struct stat *sb) +{ + return lstat (filename, sb); +} + +int process_stratum_target::multifs_unlink (int pid, const char *filename) { return unlink (filename); diff --git a/gdbserver/target.h b/gdbserver/target.h index 782e22c..66ca72f 100644 --- a/gdbserver/target.h +++ b/gdbserver/target.h @@ -1,5 +1,5 @@ /* Target operations for the remote server for GDB. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-2025 Free Software Foundation, Inc. Contributed by MontaVista Software. @@ -31,6 +31,7 @@ #include "gdbsupport/btrace-common.h" #include <vector> #include "gdbsupport/byte-vector.h" +#include <sys/stat.h> struct emit_ops; struct process_info; @@ -441,6 +442,12 @@ public: virtual int multifs_open (int pid, const char *filename, int flags, mode_t mode); + /* Multiple-filesystem-aware lstat. Like lstat(2), but operating in + the filesystem as it appears to process PID. Systems where all + processes share a common filesystem should not override this. + The default behavior is to use lstat(2). */ + virtual int multifs_lstat (int pid, const char *filename, struct stat *sb); + /* Multiple-filesystem-aware unlink. Like unlink(2), but operates in the filesystem as it appears to process PID. Systems where all processes share a common filesystem should not override this. diff --git a/gdbserver/tdesc.cc b/gdbserver/tdesc.cc index da1287a..54c105c 100644 --- a/gdbserver/tdesc.cc +++ b/gdbserver/tdesc.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Copyright (C) 2012-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/tdesc.h b/gdbserver/tdesc.h index 9264786..58b2395 100644 --- a/gdbserver/tdesc.h +++ b/gdbserver/tdesc.h @@ -1,5 +1,5 @@ /* Target description definitions for remote server for GDB. - Copyright (C) 2012-2024 Free Software Foundation, Inc. + Copyright (C) 2012-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/thread-db.cc b/gdbserver/thread-db.cc index 430504d..20e1dcc 100644 --- a/gdbserver/thread-db.cc +++ b/gdbserver/thread-db.cc @@ -1,5 +1,5 @@ /* Thread management interface, for the remote server for GDB. - Copyright (C) 2002-2024 Free Software Foundation, Inc. + Copyright (C) 2002-2025 Free Software Foundation, Inc. Contributed by MontaVista Software. diff --git a/gdbserver/tracepoint.cc b/gdbserver/tracepoint.cc index 5e3792e..b308c82 100644 --- a/gdbserver/tracepoint.cc +++ b/gdbserver/tracepoint.cc @@ -1,5 +1,5 @@ /* Tracepoint code for remote server for GDB. - Copyright (C) 2009-2024 Free Software Foundation, Inc. + Copyright (C) 2009-2025 Free Software Foundation, Inc. This file is part of GDB. @@ -948,7 +948,7 @@ struct ipa_trace_buffer_control who wrote last to the buffer control structure. We need to freeze any inferior writing to the buffer while GDBserver touches memory, so that the inferior can correctly detect that GDBserver had been - there, otherwise, it could mistakingly think its commit was + there, otherwise, it could mistakenly think its commit was successful; that's implemented by simply having GDBserver set a breakpoint the inferior hits if it is the critical region. @@ -3461,8 +3461,8 @@ cmd_qtstatus (char *packet) free_space (), phex_nz (trace_buffer_hi - trace_buffer_lo, 0), circular_trace_buffer, disconnected_tracing, - phex_nz (tracing_start_time, sizeof (tracing_start_time)), - phex_nz (tracing_stop_time, sizeof (tracing_stop_time)), + phex_nz (tracing_start_time), + phex_nz (tracing_stop_time), buf1, buf2); } @@ -4990,7 +4990,7 @@ build_traceframe_info_xml (char blocktype, unsigned char *dataptr, void *data) dataptr += sizeof (mlen); string_xml_appendf (*buffer, "<memory start=\"0x%s\" length=\"0x%s\"/>\n", - paddress (maddr), phex_nz (mlen, sizeof (mlen))); + paddress (maddr), phex_nz (mlen)); break; } case 'V': diff --git a/gdbserver/tracepoint.h b/gdbserver/tracepoint.h index b2e410f..602f103 100644 --- a/gdbserver/tracepoint.h +++ b/gdbserver/tracepoint.h @@ -1,5 +1,5 @@ /* Tracepoint code for remote server for GDB. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/utils.cc b/gdbserver/utils.cc index 57fceb1..a86405e 100644 --- a/gdbserver/utils.cc +++ b/gdbserver/utils.cc @@ -1,5 +1,5 @@ /* General utility routines for the remote server for GDB. - Copyright (C) 1986-2024 Free Software Foundation, Inc. + Copyright (C) 1986-2025 Free Software Foundation, Inc. This file is part of GDB. @@ -102,5 +102,5 @@ internal_vwarning (const char *file, int line, const char *fmt, va_list args) const char * paddress (CORE_ADDR addr) { - return phex_nz (addr, sizeof (CORE_ADDR)); + return phex_nz (addr); } diff --git a/gdbserver/utils.h b/gdbserver/utils.h index ad1f82c..bebe74a 100644 --- a/gdbserver/utils.h +++ b/gdbserver/utils.h @@ -1,5 +1,5 @@ /* General utility routines for the remote server for GDB. - Copyright (C) 1993-2024 Free Software Foundation, Inc. + Copyright (C) 1993-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/win32-i386-low.cc b/gdbserver/win32-i386-low.cc index b3e6878..26de2ec 100644 --- a/gdbserver/win32-i386-low.cc +++ b/gdbserver/win32-i386-low.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2007-2024 Free Software Foundation, Inc. +/* Copyright (C) 2007-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/win32-low.cc b/gdbserver/win32-low.cc index 3cfae74..89831de 100644 --- a/gdbserver/win32-low.cc +++ b/gdbserver/win32-low.cc @@ -1,5 +1,5 @@ /* Low level interface to Windows debugging, for gdbserver. - Copyright (C) 2006-2024 Free Software Foundation, Inc. + Copyright (C) 2006-2025 Free Software Foundation, Inc. Contributed by Leo Zayas. Based on "win32-nat.c" from GDB. diff --git a/gdbserver/win32-low.h b/gdbserver/win32-low.h index e9dd6ad..a76ed9f 100644 --- a/gdbserver/win32-low.h +++ b/gdbserver/win32-low.h @@ -1,5 +1,5 @@ /* Internal interfaces for the Win32 specific target code for gdbserver. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/x86-low.cc b/gdbserver/x86-low.cc index c59b31b..14cb012 100644 --- a/gdbserver/x86-low.cc +++ b/gdbserver/x86-low.cc @@ -1,6 +1,6 @@ /* Low level support for x86 (i386 and x86-64). - Copyright (C) 2009-2024 Free Software Foundation, Inc. + Copyright (C) 2009-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/x86-low.h b/gdbserver/x86-low.h index 89941c5..fcc18f5 100644 --- a/gdbserver/x86-low.h +++ b/gdbserver/x86-low.h @@ -1,6 +1,6 @@ /* Low level support for x86 (i386 and x86-64). - Copyright (C) 2009-2024 Free Software Foundation, Inc. + Copyright (C) 2009-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/x86-tdesc.h b/gdbserver/x86-tdesc.h index b98d8cf..be903ba 100644 --- a/gdbserver/x86-tdesc.h +++ b/gdbserver/x86-tdesc.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2018-2024 Free Software Foundation, Inc. +/* Copyright (C) 2018-2025 Free Software Foundation, Inc. This file is part of GDB. diff --git a/gdbserver/xtensa-xtregs.cc b/gdbserver/xtensa-xtregs.cc index b76a9a9..7e1faca 100644 --- a/gdbserver/xtensa-xtregs.cc +++ b/gdbserver/xtensa-xtregs.cc @@ -1,5 +1,5 @@ /* Table mapping between kernel xtregset and GDB register cache. - Copyright (C) 2007-2024 Free Software Foundation, Inc. + Copyright (C) 2007-2025 Free Software Foundation, Inc. This file is part of GDB. |