From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 615 invoked by alias); 23 Jul 2004 12:13:23 -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 599 invoked from network); 23 Jul 2004 12:13:21 -0000 Received: from unknown (HELO NUTMEG.CAM.ARTIMI.COM) (217.40.111.177) by sourceware.org with SMTP; 23 Jul 2004 12:13:21 -0000 Received: from mace ([192.168.1.25]) by NUTMEG.CAM.ARTIMI.COM with Microsoft SMTPSVC(6.0.3790.0); Fri, 23 Jul 2004 13:11:50 +0100 From: "Dave Korn" To: "'Eli Zaretskii'" , "'Mark Kettenis'" , "'Steven Murdoch'" Cc: , , , Subject: RE: [6.2] PROBLEMS file Date: Fri, 23 Jul 2004 12:16:00 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit In-reply-to: <7494-Fri23Jul2004141636+0300-eliz@gnu.org> Message-ID: X-OriginalArrivalTime: 23 Jul 2004 12:11:50.0953 (UTC) FILETIME=[3C2EB190:01C470AE] X-SW-Source: 2004-07/txt/msg00297.txt.bz2 > -----Original Message----- > From: gdb-owner On Behalf Of Eli Zaretskii > Sent: 23 July 2004 13:17 > To: Mark Kettenis > > Date: Fri, 23 Jul 2004 11:23:32 +0200 (CEST) > > From: Mark Kettenis > > > > GDB loses track after frame #21, but I doubt whether > > recursive_edit_1 is a frameless function. Can you post a > > dissassembly of that function? > > Here it is: > > (gdb) disassemble recursive_edit_1 > Dump of assembler code for function recursive_edit_1: > 0x0005f7b0 : push %ebp > 0x0005f7b1 : mov 0x375aa0,%eax > 0x0005f7b6 : mov %esp,%ebp Somebody's implemented schedulable rtl prolog insn patterns in i386 gcc and now the gdb prolog analysis gives up when it finds an instruction it doesn't recognise has been moved backward by the scheduler from the function body to in amongst the prolog instructions. I believe this may also explain the thread "GDB seems to set breakpoints on functions at the wrong place" at http://sources.redhat.com/ml/gdb/2004-07/msg00107.html, so I've Cc'd the OP of that message back in here. Hmm. I found this interesting comment in i386.md: ;; Prologue and epilogue instructions ;; UNSPEC_VOLATILE is considered to use and clobber all hard registers and ;; all of memory. This blocks insns from being moved across this point. Perhaps someone has removed one that previously used to be emitted to keep body insns out of the prolog. cheers, DaveK -- Can't think of a witty .sigline today....