From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7399 invoked by alias); 8 Apr 2006 22:16:17 -0000 Received: (qmail 7391 invoked by uid 22791); 8 Apr 2006 22:16:16 -0000 X-Spam-Check-By: sourceware.org Received: from dsl027-180-168.sfo1.dsl.speakeasy.net (HELO sunset.davemloft.net) (216.27.180.168) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 08 Apr 2006 22:16:14 +0000 Received: from localhost ([127.0.0.1] ident=davem) by sunset.davemloft.net with esmtp (Exim 4.60) (envelope-from ) id 1FSLj1-0003SB-Ra; Sat, 08 Apr 2006 15:16:11 -0700 Date: Sat, 08 Apr 2006 22:16:00 -0000 Message-Id: <20060408.151611.43979592.davem@davemloft.net> To: mark.kettenis@xs4all.nl Cc: gdb-patches@sources.redhat.com Subject: Re: [PATCH]: Get dwarf2 working on sparc64 too. From: "David S. Miller" In-Reply-To: <200604082100.k38L0LF3010368@elgar.sibelius.xs4all.nl> References: <20060405.171555.27430870.davem@davemloft.net> <200604082100.k38L0LF3010368@elgar.sibelius.xs4all.nl> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-04/txt/msg00103.txt.bz2 From: Mark Kettenis Date: Sat, 8 Apr 2006 23:00:21 +0200 (CEST) > This looks wrong to me. For one thing %g2, %g3, %g6 and %g7 are *not* > call clobbered according to SCD 2.4.1. And I fail to see why > DW_CFA_GNU_window_save has anything to do with the global registers, > since window saves only affect the other 24 general purpose registers. The code for DW_CFA_GNU_window_save explicitly initializes registers 8 and later, this leaves %g1-%g7 unintiialized. > What are the ugly warnings that you're trying to fix? The one generated here in dwarf2-frame.c:dwarf2_frame_cache(): if (fs->regs.reg[column].how == DWARF2_FRAME_REG_UNSPECIFIED) { if (cache->reg[regnum].how == DWARF2_FRAME_REG_UNSPECIFIED) complaint (&symfile_complaints, _("\ incomplete CFI data; unspecified registers (e.g., %s) at 0x%s"), gdbarch_register_name (gdbarch, regnum), paddr_nz (fs->pc)); } It will be generated for every global register (other than %g0 which we already explicitly mark on Sparc) without my change. There is also no real reason for GCC to emit explicit entries for the global registers. Global registers are used as function local temporaries and are volatile across by calls. Given all of the above, I think my change makes sense.