This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH 3/11] Add MIPS_MAX_REGISTER_SIZE (4/4)
- From: "Maciej W. Rozycki" <macro at imgtec dot com>
- To: Alan Hayward <Alan dot Hayward at arm dot com>
- Cc: Yao Qi <qiyaoltc at gmail dot com>, "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>, nd <nd at arm dot com>
- Date: Thu, 8 Jun 2017 21:26:54 +0100
- Subject: Re: [PATCH 3/11] Add MIPS_MAX_REGISTER_SIZE (4/4)
- Authentication-results: sourceware.org; auth=none
- References: <3C00280E-37C9-4C0A-9DA6-F3B9DB1A6E8F@arm.com> <86y3v7uf9j.fsf@gmail.com> <0150DDF9-6204-4F4F-99E9-D757C1DBD512@arm.com> <434A7317-C19A-4B53-8CB1-C7B4ACEC7D17@arm.com>
On Wed, 7 Jun 2017, Alan Hayward wrote:
> I don't have a MIPS machine to test on.
I could schedule a test run over the coming weekend, however your change
applies to EABI support, which I believe is long dead (as in: nobody uses
it). Consequently I don't have a way to test with an EABI target either.
> diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c
> index 82f91ba2cd950c5f48f8f408f645ea49e952ef29..52d2ca134f8d14f54c6f4e450c84597c4d6a0e0e 100644
> --- a/gdb/mips-tdep.c
> +++ b/gdb/mips-tdep.c
> @@ -4528,7 +4528,7 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
> for (argnum = 0; argnum < nargs; argnum++)
> {
> const gdb_byte *val;
> - gdb_byte valbuf[MAX_REGISTER_SIZE];
> + gdb_byte valbuf[8];
> struct value *arg = args[argnum];
> struct type *arg_type = check_typedef (value_type (arg));
> int len = TYPE_LENGTH (arg_type);
If you need to get rid of MAX_REGISTER_SIZE here (what was reason
again?), then why not simply use `regsize' instead as the array size?
AFAICS `valbuf' is only written once, with the size of data requested
specified exactly as `regsize'. The only explanation I have been able to
come up with as to why MAX_REGISTER_SIZE has been chosen for `valbuf'
allocation is it was made before we could assume variable-length automatic
array support.
> @@ -4544,6 +4544,7 @@ mips_eabi_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
> if (len > regsize
> && (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION))
> {
> + gdb_assert (regsize <= 8);
> store_unsigned_integer (valbuf, regsize, byte_order,
> value_address (arg));
> typecode = TYPE_CODE_PTR;
You obviously don't need the assertion then.
Maciej