Re: [PATCH 2/4] gdb: move regcache::regcaches to regcache.c

Pedro Alves
2020-07-23T20:03:17Z

On 7/20/20 9:40 PM, Simon Marchi via Gdb-patches wrote:
> I don't really understand why `regcache_thread_ptid_changed` is a static
> method of `struct regcache` instead of being a static free function in
> regcache.c. And I don't understand why `current_regcache` is a static
> member of `struct regcache` instead of being a static global in
> regcache.c. It's not wrong per-se, but there's no other place where we
> do it like this in GDB (as far as I remember) and it just exposes things
> unnecessarily in the .h.

current_regcache was made a static member of struct regcache in:

commit e521e87e8514b9d3497208b70bcd067f132c58ed
Author: Yao Qi <yao.qi@linaro.org>
AuthorDate: Wed May 24 22:15:23 2017 +0100

Move current_regcache to regcache::current_regcache

https://sourceware.org/pipermail/gdb-patches/2017-May/140583.html

which was needed for:

commit b77b02a5ca5a021ee8b5e5453e8843447d1132b2
Author: Yao Qi <yao.qi@linaro.org>
AuthorDate: Wed May 24 22:15:23 2017 +0100

Add unit test to gdbarch methods register_to_value and value_to_register

https://sourceware.org/pipermail/gdb-patches/2017-May/140589.html

But then later I redesigned the mocking environment:

commit 55b11ddf16b97b9c50ed480bc9da8b3e1c6c4198
Author: Pedro Alves <palves@redhat.com>
AuthorDate: Wed Oct 4 18:21:09 2017 +0100

Redesign mock environment for gdbarch selftests

https://sourceware.org/legacy-ml/gdb-patches/2017-10/msg00022.html

... and that got rid of the need to expose current_regcache.

>
> Move them to be just static in regcache.c. As a result,
> registers_changed_ptid doesn't need to be friend of the regcache class
> anymore.
>
> Removing the include of forward_list in regcache.h showed that we were
> missing an include for it in dwarf2/index-write.c, record-btrace.c and
> sparc64-tdep.c.
>
> gdb/ChangeLog:
>
> * regcache.h (class regcache): Remove friend
> registers_changed_ptid.
> <regcache_thread_ptid_changed>: Remove.
> <regcaches>: Remove.
> * regcache.c (regcache::regcaches): Rename to...
> (regcaches): ... this. Make static.
> (get_thread_arch_aspace_regcache): Update.
> (regcache::regcache_thread_ptid_changed): Rename to...
> (regcache_thread_ptid_changed): ... this. Update.
> (class regcache_access): Remove.
> (regcaches_test): Update.
> (_initialize_regcache): Update.
> * sparc64-tdep.c, dwarf2/index-write.c, record-btrace.c: Include
> <forward_list>.
>

OK.

Thanks,
Pedro Alves