From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22095 invoked by alias); 18 Jan 2002 23:49:59 -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 22056 invoked from network); 18 Jan 2002 23:49:58 -0000 Received: from unknown (HELO fred.ninemoons.com) (68.15.182.197) by sources.redhat.com with SMTP; 18 Jan 2002 23:49:58 -0000 Received: (from fnf@localhost) by fred.ninemoons.com (8.11.6/8.11.6) id g0INnLU01677; Fri, 18 Jan 2002 16:49:21 -0700 From: Fred Fish Message-Id: <200201182349.g0INnLU01677@fred.ninemoons.com> Subject: [RFA] Patch for THUMB skip_prologue code To: gdb-patches@sources.redhat.com Date: Fri, 18 Jan 2002 15:49:00 -0000 Cc: fnf@redhat.com Reply-To: fnf@redhat.com X-Mailer: ELM [version 2.5 PL6] MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2002-01/txt/msg00518.txt.bz2 The current THUMB prologue skipping code does not stop until it reaches either the end of the function, or an address that is the function start address plus 40. This patch fixes it. The gdb testsuite results for thumb code after applying this patch have the following diff: 10694c10694 < FAIL: gdb.base/nodebug.exp: running to middle in runto --- > PASS: gdb.base/nodebug.exp: backtrace from middle in nodebug.exp 15907,15908c15907,15908 < # of expected passes 7469 < # of unexpected failures 104 --- > # of expected passes 7470 > # of unexpected failures 103 -Fred ============================================================ 2002-01-18 Fred Fish * arm-tdep.c (thumb_skip_prologue): Quit scanning prologue when we have found all instructions we are looking for. Index: arm-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/arm-tdep.c,v retrieving revision 1.26 diff -u -p -r1.26 arm-tdep.c --- arm-tdep.c 2002/01/09 18:07:48 1.26 +++ arm-tdep.c 2002/01/18 23:26:14 @@ -376,6 +376,10 @@ thumb_skip_prologue (CORE_ADDR pc, CORE_ { findmask |= 2; /* setting of r7 found */ } + else if (findmask == (4+2+1)) + { + break; /* We have found one of each type of prologue instruction */ + } else continue; /* something in the prolog that we don't care about or some instruction from outside the prolog scheduled here for optimization */