From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5819 invoked by alias); 3 Feb 2004 04:06:23 -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 5793 invoked from network); 3 Feb 2004 04:06:21 -0000 Received: from unknown (HELO localhost.redhat.com) (24.157.170.238) by sources.redhat.com with SMTP; 3 Feb 2004 04:06:21 -0000 Received: from gnu.org (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id 6131C2B99; Mon, 2 Feb 2004 23:06:15 -0500 (EST) Message-ID: <401F1E37.10007@gnu.org> Date: Tue, 03 Feb 2004 04:06:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.2) Gecko/20030820 MIME-Version: 1.0 To: gdb-patches@sources.redhat.com Subject: [patch/rfc] Fix inside entry func call Content-Type: multipart/mixed; boundary="------------020708010207080908070805" X-SW-Source: 2004-02/txt/msg00052.txt.bz2 This is a multi-part message in MIME format. --------------020708010207080908070805 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-length: 418 Hello, This, cleans up one part of a long dangling thread. Per: http://sources.redhat.com/ml/gdb-patches/2003-11/msg00462.html This modifies the unwind code so that it uses the test: + && get_frame_func (this_frame) == entry_point_address () that that in place, the old inside_entry_func can be made static to blockframe.c. This should reduce Kevin's patch to just doco + frame.c tweaks. comments? Andrew --------------020708010207080908070805 Content-Type: text/plain; name="diffs" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diffs" Content-length: 4186 2004-02-02 Andrew Cagney * objfiles.h: Delete comments refering to inside_entry_func and DEPRECATED_FRAME_CHAIN_VALID. * defs.h (inside_entry_func): Delete declaration. * blockframe.c (inside_entry_func): Make static. * frame.c: Include "symfile.h" (get_prev_frame): Instead of inside_entry_func, call get_frame_func and entry_point_address. Index: blockframe.c =================================================================== RCS file: /cvs/src/src/gdb/blockframe.c,v retrieving revision 1.86 diff -u -r1.86 blockframe.c --- blockframe.c 15 Jan 2004 20:00:17 -0000 1.86 +++ blockframe.c 3 Feb 2004 03:56:48 -0000 @@ -159,7 +159,7 @@ /* Test whether PC is inside the range of addresses that corresponds to the process entry point function. */ -int +static int inside_entry_func (CORE_ADDR pc) { if (symfile_objfile == 0) Index: defs.h =================================================================== RCS file: /cvs/src/src/gdb/defs.h,v retrieving revision 1.139 diff -u -r1.139 defs.h --- defs.h 2 Feb 2004 16:07:26 -0000 1.139 +++ defs.h 3 Feb 2004 03:56:54 -0000 @@ -327,8 +327,6 @@ /* From blockframe.c */ -extern int inside_entry_func (CORE_ADDR); - extern int deprecated_inside_entry_file (CORE_ADDR addr); extern int inside_main_func (CORE_ADDR pc); Index: frame.c =================================================================== RCS file: /cvs/src/src/gdb/frame.c,v retrieving revision 1.155 diff -u -r1.155 frame.c --- frame.c 11 Jan 2004 16:52:16 -0000 1.155 +++ frame.c 3 Feb 2004 03:57:19 -0000 @@ -39,6 +39,7 @@ #include "frame-base.h" #include "command.h" #include "gdbcmd.h" +#include "symfile.h" /* We keep a cache of stack frames, each of which is a "struct frame_info". The innermost one gets allocated (in @@ -1821,9 +1822,8 @@ checking for "main" in the minimal symbols. With that fixed asm-source tests now stop in "main" instead of halting the backtrace in wierd and wonderful ways somewhere inside the entry - file. Suspect that deprecated_inside_entry_file and - inside_entry_func tests were added to work around that (now - fixed) case. */ + file. Suspect that deprecated_inside_entry_file test was added + to work around that (now fixed) case. */ /* NOTE: cagney/2003-07-15: danielj (if I'm reading it right) suggested having the inside_entry_func test use the inside_main_func msymbol trick (along with entry_point_address I @@ -1833,12 +1833,14 @@ /* NOTE: cagney/2003-07-15: Need to add a "set backtrace beyond-entry-func" command so that this can be selectively disabled. */ + /* NOTE: cagney/2004-02-02: Replaced call to inside_entry_func with + more direct check that the frame's function is the entry-point. */ if (0 #if 0 && backtrace_beyond_entry_func #endif && this_frame->type != DUMMY_FRAME && this_frame->level >= 0 - && inside_entry_func (get_frame_pc (this_frame))) + && get_frame_func (this_frame) == entry_point_address ()) { if (frame_debug) { Index: objfiles.h =================================================================== RCS file: /cvs/src/src/gdb/objfiles.h,v retrieving revision 1.29 diff -u -r1.29 objfiles.h --- objfiles.h 19 Jan 2004 19:56:02 -0000 1.29 +++ objfiles.h 3 Feb 2004 03:57:28 -0000 @@ -98,18 +98,7 @@ use the block at main, or can't find it for some reason, everything still works as before. And if we have no startup code debugging information but we do have usable information for main(), backtraces - from user code don't go wandering off into the startup code. - - To use this method, define your DEPRECATED_FRAME_CHAIN_VALID macro - like: - - #define DEPRECATED_FRAME_CHAIN_VALID(chain, thisframe) \ - (chain != 0 \ - && !(inside_main_func ((thisframe)->pc)) \ - && !(inside_entry_func ((thisframe)->pc))) - - and add initializations of the four scope controlling variables inside - the object file / debugging information processing modules. */ + from user code don't go wandering off into the startup code. */ struct entry_info { --------------020708010207080908070805--