From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31549 invoked by alias); 20 Feb 2006 21:42:11 -0000 Received: (qmail 31541 invoked by uid 22791); 20 Feb 2006 21:42:11 -0000 X-Spam-Check-By: sourceware.org Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Mon, 20 Feb 2006 21:42:09 +0000 Received: from drow by nevyn.them.org with local (Exim 4.54) id 1FBInG-0007UQ-P0; Mon, 20 Feb 2006 16:42:06 -0500 Date: Mon, 20 Feb 2006 21:45:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sourceware.org Cc: Richard Earnshaw Subject: [RFA] Bail out of Thumb unwinding if there is no symbol Message-ID: <20060220214206.GA28728@nevyn.them.org> Mail-Followup-To: gdb-patches@sourceware.org, Richard Earnshaw Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.8i X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-02/txt/msg00385.txt.bz2 If find_pc_partial_function fails, prologue_start won't have been initialized. The previous effect of this code was to try to disassemble at 0 (by luck, the variable was unset). This patch just stops unwinding when we're stuck in a Thumb function without a symbol. The astute may notice that it's a bit tricky to get to this situation with current GDB; if we don't have symbols, how do we know that we're Thumb? Well, there's a couple ways to do it, including another patch that I'm about to post. This seems like an improvement over the current situation. Lightly tested; OK? -- Daniel Jacobowitz CodeSourcery 2006-02-20 Daniel Jacobowitz * arm-tdep.c (thumb_scan_prologue): Don't try to analyze the function at zero if we have no symbols. Index: src/gdb/arm-tdep.c =================================================================== --- src.orig/gdb/arm-tdep.c 2006-02-20 16:11:02.000000000 -0500 +++ src/gdb/arm-tdep.c 2006-02-20 16:34:39.000000000 -0500 @@ -468,9 +468,9 @@ thumb_scan_prologue (CORE_ADDR prev_pc, prologue_end = sal.end; /* (probably means no prologue) */ } else - /* We're in the boondocks: allow for - 16 pushes, an add, and "mv fp,sp". */ - prologue_end = prologue_start + 40; + /* We're in the boondocks: we have no idea where the start of the + function is. */ + return; prologue_end = min (prologue_end, prev_pc);