From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6913 invoked by alias); 5 Jan 2004 20:33:40 -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 6895 invoked from network); 5 Jan 2004 20:33:39 -0000 Received: from unknown (HELO walton.kettenis.dyndns.org) (213.93.115.144) by sources.redhat.com with SMTP; 5 Jan 2004 20:33:39 -0000 Received: from elgar.kettenis.dyndns.org (elgar.kettenis.dyndns.org [192.168.0.2]) by walton.kettenis.dyndns.org (8.12.6p3/8.12.6) with ESMTP id i05KXc6l000289 for ; Mon, 5 Jan 2004 21:33:38 +0100 (CET) (envelope-from kettenis@elgar.kettenis.dyndns.org) Received: from elgar.kettenis.dyndns.org (localhost [127.0.0.1]) by elgar.kettenis.dyndns.org (8.12.6p3/8.12.6) with ESMTP id i05KXc9j000620 for ; Mon, 5 Jan 2004 21:33:38 +0100 (CET) (envelope-from kettenis@elgar.kettenis.dyndns.org) Received: (from kettenis@localhost) by elgar.kettenis.dyndns.org (8.12.6p3/8.12.6/Submit) id i05KXcxx000617; Mon, 5 Jan 2004 21:33:38 +0100 (CET) Date: Mon, 05 Jan 2004 20:33:00 -0000 Message-Id: <200401052033.i05KXcxx000617@elgar.kettenis.dyndns.org> From: Mark Kettenis To: gdb-patches@sources.redhat.com Subject: [PATCH] Don't try to unwind the PC in frame.c:get_prev_frame() X-SW-Source: 2004-01/txt/msg00104.txt.bz2 As suggested by Andrew, this removes the attempt to unwind the PC in frame.c:get_prev_frame(). This bit of code shouldn't be necessary and made it impossible to backtrace from a sentinel frame with PC == 0, which would aroise from calling a null function pointer. Andrew, I saw no use for retaining some of the commentd, so I delete the thing completely. Committed, Mark Index: ChangeLog from Mark Kettenis * frame.c (get_prev_frame): Don't try to unwind the PC. This fixes PR backtrace/1476. Index: frame.c =================================================================== RCS file: /cvs/src/src/gdb/frame.c,v retrieving revision 1.153 diff -u -p -r1.153 frame.c --- frame.c 10 Dec 2003 17:40:42 -0000 1.153 +++ frame.c 5 Jan 2004 20:27:20 -0000 @@ -1943,37 +1943,6 @@ get_prev_frame (struct frame_info *this_ prev_frame = FRAME_OBSTACK_ZALLOC (struct frame_info); prev_frame->level = this_frame->level + 1; - /* Try to unwind the PC. If that doesn't work, assume we've reached - the oldest frame and simply return. Is there a better sentinal - value? The unwound PC value is then used to initialize the new - previous frame's type. - - Note that the pc-unwind is intentionally performed before the - frame chain. This is ok since, for old targets, both - frame_pc_unwind (nee, FRAME_SAVED_PC) and - DEPRECATED_FRAME_CHAIN()) assume THIS_FRAME's data structures - have already been initialized (using - DEPRECATED_INIT_EXTRA_FRAME_INFO) and hence the call order - doesn't matter. - - By unwinding the PC first, it becomes possible to, in the case of - a dummy frame, avoid also unwinding the frame ID. This is - because (well ignoring the PPC) a dummy frame can be located - using THIS_FRAME's frame ID. */ - - if (frame_pc_unwind (this_frame) == 0) - { - /* The allocated PREV_FRAME will be reclaimed when the frame - obstack is next purged. */ - if (frame_debug) - { - fprintf_unfiltered (gdb_stdlog, "-> "); - fprint_frame (gdb_stdlog, NULL); - fprintf_unfiltered (gdb_stdlog, " // unwound PC zero }\n"); - } - return NULL; - } - /* Don't yet compute ->unwind (and hence ->type). It is computed on-demand in get_frame_type, frame_register_unwind, and get_frame_id. */