From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3189 invoked by alias); 31 Jul 2002 23:13:08 -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 3181 invoked from network); 31 Jul 2002 23:13:07 -0000 Received: from unknown (HELO cygnus.com) (205.180.83.203) by sources.redhat.com with SMTP; 31 Jul 2002 23:13:07 -0000 Received: from redhat.com (reddwarf.sfbay.redhat.com [172.16.24.50]) by runyon.cygnus.com (8.8.7-cygnus/8.8.7) with ESMTP id QAA16628; Wed, 31 Jul 2002 16:12:44 -0700 (PDT) Message-ID: <3D486AB7.64307BD0@redhat.com> Date: Wed, 31 Jul 2002 16:16:00 -0000 From: Michael Snyder Organization: Red Hat, Inc. X-Accept-Language: en MIME-Version: 1.0 To: Kevin Buettner CC: gdb-patches@sources.redhat.com Subject: Re: [RFA] mips-tdep.c: Set mips_default_saved_regsize to 8 for N32 References: <1020731225440.ZM24078@localhost.localdomain> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2002-07/txt/msg00641.txt.bz2 Kevin Buettner wrote: > > For the N32 ABI, registers are 64 bits wide, and all 64-bits are > sometimes used for certain data types (e.g. when passing structs). > So, when a register is saved in a function prologue, it is necessary > to save all 64 bits of the register. I've verified this by looking at > some function prologues created by SGI's compiler; the "sd" (which > saves the entire 64-bit register) instruction is used to save > registers. > > With this change in place, the following FAILs are fixed for n32: > > FAIL: gdb.base/call-ar-st.exp: print print_small_structs, pattern 1 > FAIL: gdb.base/call-ar-st.exp: print print_ten_doubles, pattern 5 + sentinel > FAIL: gdb.base/call-ar-st.exp: print print_small_structs from print_long_arg_list, pattern 1 > FAIL: gdb.base/call-ar-st.exp: print print_bit_flags_combo from init_bit_flags_combo > FAIL: gdb.base/call-ar-st.exp: print print_long_arg_list, pattern 7 > FAIL: gdb.base/call-ar-st.exp: print sum_struct_print(10, *struct1, *struct2, *struct3, *struct4) > FAIL: gdb.base/call-ar-st.exp: print print_struct_rep(*struct1, *struct2, *struct3), pattern 2 > FAIL: gdb.base/call-ar-st.exp: print print_one_large_struct(*list1) > > Okay to commit? I've been testing it on the n32, and it seems to work for me. > > * mips-tdep.c (mips_gdbarch_init): For the N32 ABI, set > mips_default_saved_regsize to 8. > > Index: mips-tdep.c > =================================================================== > RCS file: /cvs/src/src/gdb/mips-tdep.c,v > retrieving revision 1.85 > diff -u -p -r1.85 mips-tdep.c > --- mips-tdep.c 31 Jul 2002 20:26:49 -0000 1.85 > +++ mips-tdep.c 31 Jul 2002 22:34:59 -0000 > @@ -4480,7 +4480,7 @@ mips_gdbarch_init (struct gdbarch_info i > set_gdbarch_long_long_bit (gdbarch, 64); > break; > case MIPS_ABI_N32: > - tdep->mips_default_saved_regsize = 4; > + tdep->mips_default_saved_regsize = 8; > tdep->mips_default_stack_argsize = 8; > tdep->mips_fp_register_double = 1; > tdep->mips_last_arg_regnum = A0_REGNUM + 8 - 1;