Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Joel Brobecker <brobecker@adacore.com>
To: Michael Snyder <msnyder@redhat.com>
Cc: GDB Patches <gdb-patches@sources.redhat.com>,
		Fred Fish <fnf@specifix.com>
Subject: Re: [RFA] mips eabi, passing corner-case structs
Date: Fri, 09 Jun 2006 18:16:00 -0000	[thread overview]
Message-ID: <20060609181648.GB860@adacore.com> (raw)
In-Reply-To: <447E2AEB.504@redhat.com>

> That odd little corner case in eabi, wherein structs whose
> single field is a float or double are passed like a float or double.
> 

> 2006-05-31  Michael Snyder  <msnyder@redhat.com>
> 
> 	* mips-tdep.c (mips_eabi_push_dummy_call): Catch corner case, 
> 	structs with a single field of floating point type.

I have been trying to convince myself that it's ok to not verify
that the unique field inside the struct is not a float. It looks
OK to me, but do you confirm as well?

The patch seems OK to me, but could you merge the two comments instead
of adding one right after the current one. Also, there is a missing "s"
in "unless". The indenting seems a bit odd in the diff, but I imagine
this is because of tabulations (when are we going to get rid of these
horros...).

Thanks,

> Index: mips-tdep.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/mips-tdep.c,v
> retrieving revision 1.393
> diff -p -r1.393 mips-tdep.c
> *** mips-tdep.c	31 May 2006 23:15:50 -0000	1.393
> --- mips-tdep.c	31 May 2006 23:44:31 -0000
> *************** mips_eabi_push_dummy_call (struct gdbarc
> *** 2453,2460 ****
>   
>         /* The EABI passes structures that do not fit in a register by
>            reference.  */
> !       if (len > mips_abi_regsize (gdbarch)
> ! 	  && (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION))
>   	{
>   	  store_unsigned_integer (valbuf, mips_abi_regsize (gdbarch),
>   				  VALUE_ADDRESS (arg));
> --- 2453,2467 ----
>   
>         /* The EABI passes structures that do not fit in a register by
>            reference.  */
> !       /* MVS: unles the struct has only one field, and that field
> ! 	 will fit into two registers.  */
> !       if ((typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION)
> ! 	  && TYPE_NFIELDS (arg_type) == 1
> ! 	  && len == 2 * mips_abi_regsize (gdbarch))
> ! 	val = value_contents (arg);
> !       else if (len > mips_abi_regsize (gdbarch)
> ! 	       && (typecode == TYPE_CODE_STRUCT 
> ! 		   || typecode == TYPE_CODE_UNION))
>   	{
>   	  store_unsigned_integer (valbuf, mips_abi_regsize (gdbarch),
>   				  VALUE_ADDRESS (arg));


-- 
Joel


  parent reply	other threads:[~2006-06-09 18:16 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-31 23:55 Michael Snyder
2006-06-08 19:17 ` Michael Snyder
2006-06-09 18:16 ` Joel Brobecker [this message]
2006-06-17 23:41 ` Mark Kettenis
2006-06-20 20:21   ` Daniel Jacobowitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060609181648.GB860@adacore.com \
    --to=brobecker@adacore.com \
    --cc=fnf@specifix.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=msnyder@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox