From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26612 invoked by alias); 7 Aug 2003 15:53:21 -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 26605 invoked from network); 7 Aug 2003 15:53:20 -0000 Received: from unknown (HELO localhost.redhat.com) (207.219.125.131) by sources.redhat.com with SMTP; 7 Aug 2003 15:53:20 -0000 Received: from redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 480CB2B7F; Thu, 7 Aug 2003 11:53:16 -0400 (EDT) Message-ID: <3F3275EC.3000702@redhat.com> Date: Thu, 07 Aug 2003 15:53:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.2) Gecko/20030223 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Daniel Jacobowitz Cc: gdb Subject: Re: [testsuite & dwarf2] How to handle store.exp failure on AMD64? References: <3F3212B7.8060003@suse.cz> <20030807135035.GA28000@nevyn.them.org> <3F326928.3020502@redhat.com> <20030807150201.GA29511@nevyn.them.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2003-08/txt/msg00106.txt.bz2 > On Thu, Aug 07, 2003 at 10:58:48AM -0400, Andrew Cagney wrote: > >> >On Thu, Aug 07, 2003 at 10:49:59AM +0200, Michal Ludvig wrote: >> > > >> >>4) let GDB pretend that all registers have the same value unless said >> >>otherwise later in the .debug_frame and convince GCC to put a note when >> >>their value is overwritten. >> >> >> >>Opinions? > >> > >> > >> >See the archives of this list, from about a month ago. I discussed >> >this with Richard but never got around to writing a patch. > >> >> And I forgot to commented on the thread also :-( >> >> There are several bugs: >> >> - An architecture should mark a limited set of registers as, for want of >> a better phrase, `always unwind'. System registers, for instance, would >> fall into that category. No preserve registers, however, are a more >> interesting problem. >> >> - GCC should be generate, and GDB should consume, more complete >> variable location information. If a variable isn't preserved across a >> function call then GCC/GDB should report the variable as being unavailable. > > > I'm not talking about variable location information. I'm talking about > register unwind information; and Richard's claim that the default > should be unmodified makes sense in the context of unwinding. > > Variable locations are a different problem. A serious one, maybe, but > unrelated. Ah, relax, no need to rush the reply. To expand my first point: Registers outside of the ABI should probably always be unwound. ABI registers, though, split into callee preserved and scratch. If GCC provides no information on each of these classes then what assumptions can and should GDB make? Does GCC even generate CFI info for no-preserve registers -> forcing GDB to assume that the are not preserved? Can GDB point at the dwarf2 spec and justify any assumption it makes? For this specific ABI and problem, did GCC put the value in a preserved regiter ... >> - GCC -O0 should should not eliminate variables, and should preserve all >> variables across function calls. >> >> Given that is compiled with -O0, I think GCC is failing on count #3 here. or a scratch register? Andrew