This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch/rfc] Fix inside entry func call


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
2004-02-02  Andrew Cagney  <cagney@redhat.com>

	* 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
   {

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]