From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24800 invoked by alias); 5 Jun 2002 20:44:10 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 24792 invoked from network); 5 Jun 2002 20:44:07 -0000 Received: from unknown (HELO localhost.redhat.com) (216.138.202.10) by sources.redhat.com with SMTP; 5 Jun 2002 20:44:07 -0000 Received: from cygnus.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 30D6B3E16; Wed, 5 Jun 2002 16:44:21 -0400 (EDT) Message-ID: <3CFE7825.2030001@cygnus.com> Date: Wed, 05 Jun 2002 13:44:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0rc3) Gecko/20020530 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Daniel Jacobowitz Cc: gdb@sources.redhat.com Subject: Re: GDB broken on MIPS targets with unmarked binaries References: <20020605200429.GA7956@nevyn.them.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2002-06/txt/msg00051.txt.bz2 > There's an interesting crash on startup in a mips-elf GDB nowadays... the > code reads: > > default: > tdep->mips_abi_string = "default"; > tdep->mips_default_saved_regsize = MIPS_REGSIZE; > tdep->mips_default_stack_argsize = MIPS_REGSIZE; > tdep->mips_fp_register_double = (REGISTER_VIRTUAL_SIZE (FP0_REGNUM) == 8); > tdep->mips_last_arg_regnum = A0_REGNUM + 8 - 1; > tdep->mips_last_fp_arg_regnum = FPA0_REGNUM + 8 - 1; > tdep->mips_regs_have_home_p = 1; > tdep->gdb_target_is_mips64 = 0; > tdep->default_mask_address_p = 0; > set_gdbarch_long_bit (gdbarch, 32); > set_gdbarch_ptr_bit (gdbarch, 32); > set_gdbarch_long_long_bit (gdbarch, 64); > break; > > Something brought in recently, probably by the OS ABI changes if I had to > guess, is causing the check of REGISTER_VIRTUAL_SIZE to fail. I've no idea > why. Compiling a mips-elf (not mips-linux, which sets MIPS_DEFAULT_ABI) and > running gdb on an unmarked ELF binary reproduces this. I'd suspect this: 2002-05-08 Andrew Cagney * gdbarch.sh (init_gdbarch_swap): Do not clear the swap section. (clear_gdbarch_swap): New function. (initialize_non_multiarch): Call. (gdbarch_update_p): Before calling init(), swap out and clear the existing architecture. * gdbarch.c: Regenerate. The comment from arm-tdep.c should help explain why the above code is broken: /* We can't use NUM_REGS nor NUM_PSEUDO_REGS here, since that still references the old architecture vector, not the one we are building here. */ prologue_cache.saved_regs = (CORE_ADDR *) xcalloc (1, (sizeof (CORE_ADDR) * (gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch)))); As far as I can tell though, REGISTER_VIRTUAL_SIZE expands to REGISTER_VIRTUAL_TYPE which is still a macro? Andrew