From: Daniel Jacobowitz <drow@mvista.com>
To: gdb-patches@sources.redhat.com
Subject: Re: [patch/rfc] Fix inside entry func call
Date: Wed, 04 Feb 2004 15:40:00 -0000 [thread overview]
Message-ID: <20040204154022.GA28919@nevyn.them.org> (raw)
In-Reply-To: <40201E5A.70605@gnu.org>
On Tue, Feb 03, 2004 at 05:19:06PM -0500, Andrew Cagney wrote: It is
> there to prop up legacy code. Given this, I even considered deleting
> it (or folding it into legacy_frame_chain_valid).
>
> Do you want me to add a new separate static frame.c:inside_entry_func?
I apologize for my continued obtuseness. How would you feel about the
below patch instead?
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
2004-02-02 Andrew Cagney <cagney@redhat.com>
Daniel Jacobowitz <drow@mvista.com>
* objfiles.h: Delete comments refering to inside_entry_func and
DEPRECATED_FRAME_CHAIN_VALID.
* defs.h (inside_entry_func): Update prototype..
* blockframe.c (inside_entry_func): Rename to
legacy_inside_entry_func. Add new inside_entry_func taking a frame.
* frame.c (get_prev_frame): Pass the frame to inside_entry_func.
Index: blockframe.c
===================================================================
RCS file: /cvs/src/src/gdb/blockframe.c,v
retrieving revision 1.86
diff -u -p -r1.86 blockframe.c
--- blockframe.c 15 Jan 2004 20:00:17 -0000 1.86
+++ blockframe.c 4 Feb 2004 15:39:25 -0000
@@ -156,11 +156,18 @@ inside_main_func (CORE_ADDR pc)
&& symfile_objfile->ei.main_func_highpc > pc);
}
-/* Test whether PC is inside the range of addresses that corresponds
- to the process entry point function. */
+/* Test whether THIS_FRAME is inside the process entry point function. */
int
-inside_entry_func (CORE_ADDR pc)
+inside_entry_func (struct frame_info *this_frame)
+{
+ return (get_frame_func (this_frame) == entry_point_address ());
+}
+
+/* Similar to inside_entry_func, but accomodating legacy frame code. */
+
+static int
+legacy_inside_entry_func (CORE_ADDR pc)
{
if (symfile_objfile == 0)
return 0;
@@ -604,7 +611,7 @@ legacy_frame_chain_valid (CORE_ADDR fp,
/* If we're already inside the entry function for the main objfile, then it
isn't valid. */
- if (inside_entry_func (get_frame_pc (fi)))
+ if (legacy_inside_entry_func (get_frame_pc (fi)))
return 0;
/* If we're inside the entry file, it isn't valid. */
Index: defs.h
===================================================================
RCS file: /cvs/src/src/gdb/defs.h,v
retrieving revision 1.139
diff -u -p -r1.139 defs.h
--- defs.h 2 Feb 2004 16:07:26 -0000 1.139
+++ defs.h 4 Feb 2004 15:39:25 -0000
@@ -324,10 +324,11 @@ struct cleanup
struct symtab;
struct breakpoint;
+struct frame_info;
/* From blockframe.c */
-extern int inside_entry_func (CORE_ADDR);
+extern int inside_entry_func (struct frame_info *this_frame);
extern int deprecated_inside_entry_file (CORE_ADDR addr);
@@ -655,8 +656,6 @@ enum lval_type
lval_register or lval_memory). */
lval_reg_frame_relative
};
-
-struct frame_info;
/* Control types for commands */
Index: frame.c
===================================================================
RCS file: /cvs/src/src/gdb/frame.c,v
retrieving revision 1.155
diff -u -p -r1.155 frame.c
--- frame.c 11 Jan 2004 16:52:16 -0000 1.155
+++ frame.c 4 Feb 2004 15:39:26 -0000
@@ -1838,7 +1838,7 @@ get_prev_frame (struct frame_info *this_
&& backtrace_beyond_entry_func
#endif
&& this_frame->type != DUMMY_FRAME && this_frame->level >= 0
- && inside_entry_func (get_frame_pc (this_frame)))
+ && inside_entry_func (this_frame))
{
if (frame_debug)
{
Index: objfiles.h
===================================================================
RCS file: /cvs/src/src/gdb/objfiles.h,v
retrieving revision 1.29
diff -u -p -r1.29 objfiles.h
--- objfiles.h 19 Jan 2004 19:56:02 -0000 1.29
+++ objfiles.h 4 Feb 2004 15:39:26 -0000
@@ -98,18 +98,7 @@ struct objfile_data;
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
{
next prev parent reply other threads:[~2004-02-04 15:40 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-03 4:06 Andrew Cagney
2004-02-03 17:25 ` Daniel Jacobowitz
2004-02-03 22:19 ` Andrew Cagney
2004-02-04 15:40 ` Daniel Jacobowitz [this message]
2004-02-04 16:30 ` Andrew Cagney
2004-02-04 16:43 ` Daniel Jacobowitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040204154022.GA28919@nevyn.them.org \
--to=drow@mvista.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox