From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23631 invoked by alias); 5 Dec 2003 00:49:12 -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 23621 invoked from network); 5 Dec 2003 00:49:11 -0000 Received: from unknown (HELO frothingslosh.sfbay.redhat.com) (66.187.237.200) by sources.redhat.com with SMTP; 5 Dec 2003 00:49:11 -0000 Received: from frothingslosh.sfbay.redhat.com (localhost.localdomain [127.0.0.1]) by frothingslosh.sfbay.redhat.com (8.12.8/8.12.8) with ESMTP id hB50luOG018269; Thu, 4 Dec 2003 16:47:56 -0800 Received: (from rth@localhost) by frothingslosh.sfbay.redhat.com (8.12.8/8.12.8/Submit) id hB50luXf018267; Thu, 4 Dec 2003 16:47:56 -0800 X-Authentication-Warning: frothingslosh.sfbay.redhat.com: rth set sender to rth@redhat.com using -f Date: Fri, 05 Dec 2003 00:49:00 -0000 From: Richard Henderson To: Ulrich Weigand Cc: gdb-patches@sources.redhat.com, uweigand@de.ibm.com Subject: Re: [PATCH] S/390 DWARF-2 CFI frame support Message-ID: <20031205004756.GA18170@redhat.com> References: <200312042009.VAA07733@faui1d.informatik.uni-erlangen.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200312042009.VAA07733@faui1d.informatik.uni-erlangen.de> User-Agent: Mutt/1.4i X-SW-Source: 2003-12/txt/msg00164.txt.bz2 On Thu, Dec 04, 2003 at 09:09:12PM +0100, Ulrich Weigand wrote: > To fix this, I suggest the following. What GCC assumes to happen > when it leaves a register unspecified in the CFI depends on whether > the register is call-saved or call-clobbered according to the > target's ABI. If it is call-saved (and unspecified), the function > doesn't save/restore it because it does not in fact ever modify it. > Thus, in this case the debugger should copy the value from the > inner frame. If it is call-clobbered (those will always be left > unspecified), it should be assumed undefined. This is wrong. The debugger should just assume *all* registers that are not explicitly saved are preserved. In the case of call-clobbered registers, you just won't *know* that they are actually dead. But so what? This is no worse than not having location list information that tells you that a value is dead after its register gets re-used for something else. However, when I made this argument before, it wasn't good enough for some people, and they added the annoying warning anyway. r~