From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26248 invoked by alias); 6 Aug 2002 22:02:49 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 26234 invoked from network); 6 Aug 2002 22:02:47 -0000 Received: from unknown (HELO localhost.redhat.com) (216.138.202.10) by sources.redhat.com with SMTP; 6 Aug 2002 22:02:47 -0000 Received: from ges.redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id E27C73E1C; Tue, 6 Aug 2002 18:02:43 -0400 (EDT) Message-ID: <3D504783.3060706@ges.redhat.com> Date: Tue, 06 Aug 2002 15:02:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.0) Gecko/20020802 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Michael Snyder Cc: gdb-patches@sources.redhat.com Subject: Re: [RFA] mips-n32 reg_struct_has_addr References: <3D49EC2D.86CF5517@redhat.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2002-08/txt/msg00142.txt.bz2 > + static int > + mips_newabi_reg_struct_has_addr (int gcc_p, struct type *type) > + { > + enum type_code typecode = TYPE_CODE (check_typedef (type)); > + int len = TYPE_LENGTH (check_typedef (type)); > + > + if (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION) > + return (len > MIPS_SAVED_REGSIZE && len % MIPS_SAVED_REGSIZE != 0); > + > + return 0; > + } No, I don't think this is right. As best I can tell, there is no cap on the size of a struct that is passed by register. http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi/srch3@o32/0650/bks/SGI_Developer/books/Mpro_n32_ABI/sgi_html/ch02.html#id80931 I.e., o32 and n32/n64 are the same -> never pass structures by reference. > *************** mips_push_arguments (int nargs, > *** 2428,2448 **** > "mips_push_arguments: %d len=%d type=%d", > argnum + 1, len, (int) typecode); > > ! /* The EABI passes structures that do not fit in a register by Per other e-mail, rather than modify the existing mips_push_argument() can you please created a dedicated mips_n32n64_push-arguments() function and hack on that. That way, I don't have to worry about the other ABIs. > + /* Set up reg_struct_has_addr. */ > + set_gdbarch_reg_struct_has_addr (gdbarch, BTW, the comment here is redundant. enjoy, Andrew