Re: [PATCH 5/9 v7] Introduce common-regcache.h

Doug Evans
2014-09-10T18:00:40Z

Gary Benson writes:
> This introduces common-regcache.h. This contains two functions that
> allow nat/linux-btrace.c to be simplified. A better long term
> solution would be unify the regcache code, but this is sufficient for
> now.
>
> This patch differs from the version I posted on August 1
> (https://sourceware.org/ml/gdb-patches/2014-08/msg00010.html) in that
> some suggested documentation changes have been made and that various
> updates were required to reflect regcache changes recently committed
> by Andreas Arnez.
>
> gdb/ChangeLog:
>
> * common/common-regcache.h: New file.
> * Makefile.in (HFILES_NO_SRCDIR): Add common/common-regcache.h.
> * regcache.h: Include common-regcache.h.
> (regcache_read_pc): Don't declare.
> * regcache.c (get_thread_regcache_for_ptid): New function.
> * nat/linux-btrace.c: Don't include regcache.h.
> Include common-regcache.h.
> (perf_event_read_bts): Use get_thread_regcache_for_ptid.
>
> gdb/gdbserver/ChangeLog:
>
> * regcache.h: Include common-regcache.h.
> (regcache_read_pc): Don't declare.
> * regcache.c (get_thread_regcache_for_ptid): New function.
>[...]
> diff --git a/gdb/common/common-regcache.h b/gdb/common/common-regcache.h
> new file mode 100644
> index 0000000..aef6bfd
> --- /dev/null
> +++ b/gdb/common/common-regcache.h
> @@ -0,0 +1,35 @@
> +/* Cache and manage the values of registers
> +
> + Copyright (C) 1986-2014 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/>. */
> +
> +#ifndef COMMON_REGCACHE_H
> +#define COMMON_REGCACHE_H
> +
> +/* This header is a stopgap until we have an independent regcache. */
> +
> +/* Return the register cache associated with the thread specified
> + by PTID. This function must be provided by the client. */

Hi.
Can you add a comment here explaining the ownership of the memory
object returned?
E.g., is it cached "internally" to the function so that the caller
doesn't have to free it?

Thanks!

> +
> +extern struct regcache *get_thread_regcache_for_ptid (ptid_t ptid);
> +
> +/* Read the PC register. This function must be provided by the
> + client. */
> +
> +extern CORE_ADDR regcache_read_pc (struct regcache *regcache);
> +
> +#endif /* COMMON_REGCACHE_H */