This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 8/11] Add FRV_MAX_REGISTER_SIZE
- From: Alan Hayward <Alan dot Hayward at arm dot com>
- To: Yao Qi <qiyaoltc at gmail dot com>
- Cc: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>, nd <nd at arm dot com>
- Date: Wed, 12 Apr 2017 08:27:52 +0000
- Subject: Re: [PATCH 8/11] Add FRV_MAX_REGISTER_SIZE
- Authentication-results: sourceware.org; auth=none
- Authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=arm.com;
- Nodisclaimer: True
- References: <3B3BD949-1C9D-44FF-AB6A-03091ECA49D0@arm.com> <867f2rw9br.fsf@gmail.com>
- Spamdiagnosticmetadata: NSPM
- Spamdiagnosticoutput: 1:99
> On 11 Apr 2017, at 11:02, Yao Qi <qiyaoltc@gmail.com> wrote:
>
> Alan Hayward <Alan.Hayward@arm.com> writes:
>
>> - char zerobuf[MAX_REGISTER_SIZE];
>> + char zerobuf[FRV_MAX_REGISTER_SIZE];
>>
>> - memset (zerobuf, 0, MAX_REGISTER_SIZE);
>> + memset (zerobuf, 0, FRV_MAX_REGISTER_SIZE);
>>
>> /* gr0 always contains 0. Also, the kernel passes the TBR value in
>> this slot. */
>
> The code here fills some gr registers with zeros,
>
> /* gr0 always contains 0. Also, the kernel passes the TBR value in
> this slot. */
> regcache_raw_supply (regcache, first_gpr_regnum, zerobuf);
>
> /* Fill gr32, ..., gr63 with zeros. */
> for (regi = first_gpr_regnum + 32; regi <= last_gpr_regnum; regi++)
> regcache_raw_supply (regcache, regi, zerobuf);
>
> the size of these gr registers are know, 8 bytes. It won't be changed.
> We can do,
>
> gdb_byte zerobuf[8] = { 0 };
>
> the code is still easy to read. If you really dislike magic number (IMO, 8
> is not a magic number in this context), you can define FRR_GR_REGISTER_SIZE.
>
> Alternatively, you can add a new regache api, regcache_raw_supply_zero.
> Many places can use this api, and some uses of MAX_REGISTER_SIZE can be
> removed too, for example,
>
> regcache_raw_supply (regcache, MIPS_ZERO_REGNUM, zerobuf);
>
> --
> Yao (齐尧)
Went with the simpler solution.
I don't have a FRV machine to test on.
Tested on a --enable-targets=all build using make check with board files
unix and native-gdbserver.
Ok to commit?
Alan.
2017-04-12 Alan Hayward <alan.hayward@arm.com>
* gdb/frv-linux-tdep.c (frv_linux_supply_gregset): Remove MAX_REGISTER_SIZE.
diff --git a/gdb/frv-linux-tdep.c b/gdb/frv-linux-tdep.c
index eb87f93058b0287e8f05c585d1b6aa1ff2bffb78..3f91bf0ee81a5d5ca915c88337c6a4b4ed53d344 100644
--- a/gdb/frv-linux-tdep.c
+++ b/gdb/frv-linux-tdep.c
@@ -413,9 +413,7 @@ frv_linux_supply_gregset (const struct regset *regset,
int regnum, const void *gregs, size_t len)
{
int regi;
- char zerobuf[MAX_REGISTER_SIZE];
-
- memset (zerobuf, 0, MAX_REGISTER_SIZE);
+ gdb_byte zerobuf[8] = { 0 };
/* gr0 always contains 0. Also, the kernel passes the TBR value in
this slot. */