From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22783 invoked by alias); 4 Dec 2003 01:49:24 -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 22768 invoked from network); 4 Dec 2003 01:49:22 -0000 Received: from unknown (HELO localhost.redhat.com) (207.219.125.105) by sources.redhat.com with SMTP; 4 Dec 2003 01:49:22 -0000 Received: from gnu.org (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 8D78D2B8F; Wed, 3 Dec 2003 20:49:21 -0500 (EST) Message-ID: <3FCE92A1.6010007@gnu.org> Date: Thu, 04 Dec 2003 01:49:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.2) Gecko/20030820 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Joel Brobecker Cc: gdb-patches@sources.redhat.com Subject: Re: [RFA] OSF/1 - "next" over prologueless function call References: <20031202042646.GW1186@gnat.com> <3FCD6468.9020708@gnu.org> <20031204005521.GD716@gnat.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2003-12/txt/msg00100.txt.bz2 >> See my recent comments further down in that file. I think GDB should be >> using: >> >> frame_id_unwind(current_frame) == frame_id_from_before_stepi >> >> to determine if it did a step into a function. What happens if that is >> used? > > > Sounds like a good idea, almost obvious actually :-). I tried the > following change on osf1 and x86-linux without any regression, and it > does solve the problem on osf1. (only took 15 years to realise how "obvious" it was :-) > However, I tried it on sparc-solaris with the gdb-6.0 sources because > I knew this target hasn't transitioned to the new frame framework. > It doesn't look like GDB is liking this change there (I've got a lot of > timeouts in call-ar-st). I am currently retrying on the head right now, > hoping the testsuite completes in a reasonable amount of time. > > > --- infrun.c 25 Nov 2003 16:01:36 -0000 1.122 > +++ infrun.c 3 Dec 2003 19:24:07 -0000 > @@ -2473,6 +2473,8 @@ process_event_stop_test: > } > > if (((stop_pc == ecs->stop_func_start /* Quick test */ > + || frame_id_eq (get_frame_id (get_prev_frame (get_current_frame ())), > + step_frame_id) > || in_prologue (stop_pc, ecs->stop_func_start)) > && !IN_SOLIB_RETURN_TRAMPOLINE (stop_pc, ecs->stop_func_name)) > || IN_SOLIB_CALL_TRAMPOLINE (stop_pc, ecs->stop_func_name) > > > Stay tuned. You can use legacy_frame_p for differentiating old and new code. Hmm, is "stop_pc == ecs->stop_func_start" a valid test, what happens if the program is at 1: and there's a next? foo: ... 1: goto foo Hmm, is in_prologue() adding value when frame_id always works? Unless it's being used to handle stepping through a prologue? Andrew