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;rfa:symtab] Deprecate inside_entry_file


Hello,

This patch deprecates both the function inside_entry_file() and the object file variables that support it (I don't want there to be any confusion over this :-).

As Corinna wrote:

+  /* NOTE: vinschen/2003-04-01: Disabled.  It turns out that the call
+     to deprecated_inside_entry_file destroys a meaningful backtrace
+     under some conditions.  E. g. the backtrace tests in the
+     asm-source testcase are broken for some targets.  In this test
+     the functions are all implemented as part of one file and the
+     testcase is not necessarily linked with a start file (depending
+     on the target).  What happens is, that the first frame is printed
+     normaly and following frames are treated as being inside the
+     enttry file then.  This way, only the #0 frame is printed in the
+     backtrace output.  */

this "traditional" technique is of use to anyone.

Before thinking about committing this I'd like to see comments on the symtab side.

Andrew
2003-09-09  Andrew Cagney  <cagney@redhat.com>

	* objfiles.h (struct entry_info): Deprecate "entry_file_lowpc" and
	"entry_file_highpc".  Update comments.
	* defs.h (deprecated_inside_entry_file): Rename
	"inside_entry_file".
	* blockframe.c (deprecated_inside_entry_file): Rename
	"inside_entry_file".
	* frame.c (get_prev_frame): Update.  Use if 0 instead of #if 0.
	* vax-tdep.c (vax_frame_chain): Update.
	* sh64-tdep.c (sh64_frame_chain): Update.
	* sh-tdep.c (sh_frame_chain): Update.
	* rs6000-tdep.c (rs6000_frame_chain): Update.
	* ns32k-tdep.c (ns32k_frame_chain): Update.
	* mips-tdep.c (mips_frame_chain): Update.
	* m68hc11-tdep.c (m68hc11_frame_this_id): Update.
	* m32r-tdep.c (m32r_frame_this_id): Update.
	* i386-interix-tdep.c (i386_interix_frame_chain_valid): Update.
	* frv-tdep.c (frv_frame_this_id): Update.
	* d10v-tdep.c (d10v_frame_this_id): Update.
	* cris-tdep.c (cris_frame_chain): Update.
	* blockframe.c (legacy_frame_chain_valid): Update.
	* avr-tdep.c (avr_frame_this_id): Update.
	* arm-tdep.c (arm_prologue_this_id): Update.
	* alpha-tdep.c (alpha_heuristic_frame_this_id): Update.
	* objfiles.c (objfile_relocate): Update.
	* mipsread.c (mipscoff_symfile_read): Update.
	(mipscoff_symfile_read): Update.
	* mdebugread.c (parse_partial_symbols): Update.
	* dwarfread.c (read_file_scope): Update.
	* dwarf2read.c (read_file_scope): Update.
	* dbxread.c (read_dbx_symtab): Update.
	(read_dbx_symtab): Update.
	* coffread.c (complete_symtab): Update.

Index: alpha-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/alpha-tdep.c,v
retrieving revision 1.120
diff -u -r1.120 alpha-tdep.c
--- alpha-tdep.c	9 Sep 2003 03:14:02 -0000	1.120
+++ alpha-tdep.c	9 Sep 2003 21:20:24 -0000
@@ -1138,7 +1138,7 @@
 
   /* This is meant to halt the backtrace at "_start".  Make sure we
      don't halt it at a generic dummy frame. */
-  if (inside_entry_file (info->start_pc))
+  if (deprecated_inside_entry_file (info->start_pc))
     return;
 
   *this_id = frame_id_build (info->vfp, info->start_pc);
Index: arm-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/arm-tdep.c,v
retrieving revision 1.148
diff -u -r1.148 arm-tdep.c
--- arm-tdep.c	9 Sep 2003 03:58:18 -0000	1.148
+++ arm-tdep.c	9 Sep 2003 21:20:30 -0000
@@ -970,7 +970,7 @@
 
   /* This is meant to halt the backtrace at "_start".  Make sure we
      don't halt it at a generic dummy frame. */
-  if (func <= LOWEST_PC || inside_entry_file (func))
+  if (func <= LOWEST_PC || deprecated_inside_entry_file (func))
     return;
 
   /* If we've hit a wall, stop.  */
Index: avr-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/avr-tdep.c,v
retrieving revision 1.70
diff -u -r1.70 avr-tdep.c
--- avr-tdep.c	9 Sep 2003 04:41:31 -0000	1.70
+++ avr-tdep.c	9 Sep 2003 21:20:31 -0000
@@ -972,7 +972,7 @@
 
   /* This is meant to halt the backtrace at "_start".  Make sure we
      don't halt it at a generic dummy frame. */
-  if (inside_entry_file (func))
+  if (deprecated_inside_entry_file (func))
     return;
 
   /* Hopefully the prologue analysis either correctly determined the
Index: blockframe.c
===================================================================
RCS file: /cvs/src/src/gdb/blockframe.c,v
retrieving revision 1.78
diff -u -r1.78 blockframe.c
--- blockframe.c	9 Sep 2003 03:58:18 -0000	1.78
+++ blockframe.c	9 Sep 2003 21:20:33 -0000
@@ -53,7 +53,7 @@
    A PC of zero is always considered to be the bottom of the stack. */
 
 int
-inside_entry_file (CORE_ADDR addr)
+deprecated_inside_entry_file (CORE_ADDR addr)
 {
   if (addr == 0)
     return 1;
@@ -68,8 +68,8 @@
       if (DEPRECATED_PC_IN_CALL_DUMMY (addr, 0, 0))
 	return 0;
     }
-  return (addr >= symfile_objfile->ei.entry_file_lowpc &&
-	  addr < symfile_objfile->ei.entry_file_highpc);
+  return (addr >= symfile_objfile->ei.deprecated_entry_file_lowpc &&
+	  addr < symfile_objfile->ei.deprecated_entry_file_highpc);
 }
 
 /* Test a specified PC value to see if it is in the range of addresses
@@ -611,7 +611,7 @@
   /* NOTE/drow 2002-12-25: should there be a way to disable this check?  It
      assumes a single small entry file, and the way some debug readers (e.g.
      dbxread) figure out which object is the entry file is somewhat hokey.  */
-  if (inside_entry_file (frame_pc_unwind (fi)))
+  if (deprecated_inside_entry_file (frame_pc_unwind (fi)))
       return 0;
 
   return 1;
Index: coffread.c
===================================================================
RCS file: /cvs/src/src/gdb/coffread.c,v
retrieving revision 1.41
diff -u -r1.41 coffread.c
--- coffread.c	11 Jun 2003 23:29:46 -0000	1.41
+++ coffread.c	9 Sep 2003 21:20:36 -0000
@@ -391,8 +391,8 @@
   if (current_objfile->ei.entry_point >= current_source_start_addr &&
       current_objfile->ei.entry_point < current_source_end_addr)
     {
-      current_objfile->ei.entry_file_lowpc = current_source_start_addr;
-      current_objfile->ei.entry_file_highpc = current_source_end_addr;
+      current_objfile->ei.deprecated_entry_file_lowpc = current_source_start_addr;
+      current_objfile->ei.deprecated_entry_file_highpc = current_source_end_addr;
     }
 }
 
Index: cris-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/cris-tdep.c,v
retrieving revision 1.82
diff -u -r1.82 cris-tdep.c
--- cris-tdep.c	9 Sep 2003 04:41:31 -0000	1.82
+++ cris-tdep.c	9 Sep 2003 21:20:40 -0000
@@ -1248,7 +1248,7 @@
     {
       return get_frame_base (fi);
     }
-  else if (!inside_entry_file (get_frame_pc (fi)))
+  else if (!deprecated_inside_entry_file (get_frame_pc (fi)))
     {
       return read_memory_unsigned_integer (get_frame_base (fi), 4);
     }
Index: d10v-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/d10v-tdep.c,v
retrieving revision 1.129
diff -u -r1.129 d10v-tdep.c
--- d10v-tdep.c	16 Jul 2003 22:29:13 -0000	1.129
+++ d10v-tdep.c	9 Sep 2003 21:20:43 -0000
@@ -1405,7 +1405,7 @@
 
   /* This is meant to halt the backtrace at "_start".  Make sure we
      don't halt it at a generic dummy frame. */
-  if (func <= IMEM_START || inside_entry_file (func))
+  if (func <= IMEM_START || deprecated_inside_entry_file (func))
     return;
 
   /* Hopefully the prologue analysis either correctly determined the
Index: dbxread.c
===================================================================
RCS file: /cvs/src/src/gdb/dbxread.c,v
retrieving revision 1.49
diff -u -r1.49 dbxread.c
--- dbxread.c	8 Sep 2003 19:22:30 -0000	1.49
+++ dbxread.c	9 Sep 2003 21:20:49 -0000
@@ -1450,8 +1450,8 @@
 	    if (objfile->ei.entry_point < nlist.n_value &&
 		objfile->ei.entry_point >= last_o_file_start)
 	      {
-		objfile->ei.entry_file_lowpc = last_o_file_start;
-		objfile->ei.entry_file_highpc = nlist.n_value;
+		objfile->ei.deprecated_entry_file_lowpc = last_o_file_start;
+		objfile->ei.deprecated_entry_file_highpc = nlist.n_value;
 	      }
 	    if (past_first_source_file && pst
 		/* The gould NP1 uses low values for .o and -l symbols
@@ -2214,8 +2214,8 @@
       && objfile->ei.entry_point < nlist.n_value
       && objfile->ei.entry_point >= last_o_file_start)
     {
-      objfile->ei.entry_file_lowpc = last_o_file_start;
-      objfile->ei.entry_file_highpc = nlist.n_value;
+      objfile->ei.deprecated_entry_file_lowpc = last_o_file_start;
+      objfile->ei.deprecated_entry_file_highpc = nlist.n_value;
     }
 
   if (pst)
Index: defs.h
===================================================================
RCS file: /cvs/src/src/gdb/defs.h,v
retrieving revision 1.129
diff -u -r1.129 defs.h
--- defs.h	3 Sep 2003 15:02:49 -0000	1.129
+++ defs.h	9 Sep 2003 21:20:50 -0000
@@ -303,7 +303,7 @@
 
 extern int inside_entry_func (CORE_ADDR);
 
-extern int inside_entry_file (CORE_ADDR addr);
+extern int deprecated_inside_entry_file (CORE_ADDR addr);
 
 extern int inside_main_func (CORE_ADDR pc);
 
Index: dwarf2read.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarf2read.c,v
retrieving revision 1.100
diff -u -r1.100 dwarf2read.c
--- dwarf2read.c	26 Aug 2003 05:28:38 -0000	1.100
+++ dwarf2read.c	9 Sep 2003 21:20:59 -0000
@@ -1910,8 +1910,8 @@
   if (objfile->ei.entry_point >= lowpc &&
       objfile->ei.entry_point < highpc)
     {
-      objfile->ei.entry_file_lowpc = lowpc;
-      objfile->ei.entry_file_highpc = highpc;
+      objfile->ei.deprecated_entry_file_lowpc = lowpc;
+      objfile->ei.deprecated_entry_file_highpc = highpc;
     }
 
   attr = dwarf_attr (die, DW_AT_language);
Index: dwarfread.c
===================================================================
RCS file: /cvs/src/src/gdb/dwarfread.c,v
retrieving revision 1.29
diff -u -r1.29 dwarfread.c
--- dwarfread.c	27 Jun 2003 13:09:38 -0000	1.29
+++ dwarfread.c	9 Sep 2003 21:21:03 -0000
@@ -1868,8 +1868,8 @@
   if (objfile->ei.entry_point >= dip->at_low_pc &&
       objfile->ei.entry_point < dip->at_high_pc)
     {
-      objfile->ei.entry_file_lowpc = dip->at_low_pc;
-      objfile->ei.entry_file_highpc = dip->at_high_pc;
+      objfile->ei.deprecated_entry_file_lowpc = dip->at_low_pc;
+      objfile->ei.deprecated_entry_file_highpc = dip->at_high_pc;
     }
   set_cu_language (dip);
   if (dip->at_producer != NULL)
Index: frame.c
===================================================================
RCS file: /cvs/src/src/gdb/frame.c,v
retrieving revision 1.138
diff -u -r1.138 frame.c
--- frame.c	8 Sep 2003 18:56:03 -0000	1.138
+++ frame.c	9 Sep 2003 21:21:08 -0000
@@ -1844,8 +1844,9 @@
      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 inside_entry_file and inside_entry_func tests
-     were added to work around that (now fixed) case.  */
+     file.  Suspect that deprecated_inside_entry_file and
+     inside_entry_func tests were 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
@@ -1884,7 +1885,6 @@
     }
   this_frame->prev_p = 1;
 
-#if 0
   /* If we're inside the entry file, it isn't valid.  Don't apply this
      test to a dummy frame - dummy frame PC's typically land in the
      entry file.  Don't apply this test to the sentinel frame.
@@ -1896,17 +1896,19 @@
   /* NOTE: cagney/2003-01-10: If there is a way of disabling this test
      then it should probably be moved to before the ->prev_p test,
      above.  */
-  /* NOTE: vinschen/2003-04-01: Disabled.  It turns out that the call to
-     inside_entry_file destroys a meaningful backtrace under some
-     conditions.  E. g. the backtrace tests in the asm-source testcase
-     are broken for some targets.  In this test the functions are all
-     implemented as part of one file and the testcase is not necessarily
-     linked with a start file (depending on the target).  What happens is,
-     that the first frame is printed normaly and following frames are
-     treated as being inside the enttry file then.  This way, only the
-     #0 frame is printed in the backtrace output.  */
-  if (this_frame->type != DUMMY_FRAME && this_frame->level >= 0
-      && inside_entry_file (get_frame_pc (this_frame)))
+  /* NOTE: vinschen/2003-04-01: Disabled.  It turns out that the call
+     to deprecated_inside_entry_file destroys a meaningful backtrace
+     under some conditions.  E. g. the backtrace tests in the
+     asm-source testcase are broken for some targets.  In this test
+     the functions are all implemented as part of one file and the
+     testcase is not necessarily linked with a start file (depending
+     on the target).  What happens is, that the first frame is printed
+     normaly and following frames are treated as being inside the
+     enttry file then.  This way, only the #0 frame is printed in the
+     backtrace output.  */
+  if (0
+      && this_frame->type != DUMMY_FRAME && this_frame->level >= 0
+      && deprecated_inside_entry_file (get_frame_pc (this_frame)))
     {
       if (frame_debug)
 	{
@@ -1916,7 +1918,6 @@
 	}
       return NULL;
     }
-#endif
 
   /* If any of the old frame initialization methods are around, use
      the legacy get_prev_frame method.  */
Index: frv-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/frv-tdep.c,v
retrieving revision 1.50
diff -u -r1.50 frv-tdep.c
--- frv-tdep.c	8 Sep 2003 23:01:28 -0000	1.50
+++ frv-tdep.c	9 Sep 2003 21:21:09 -0000
@@ -965,7 +965,7 @@
 
   /* This is meant to halt the backtrace at "_start".  Make sure we
      don't halt it at a generic dummy frame. */
-  if (inside_entry_file (func))
+  if (deprecated_inside_entry_file (func))
     return;
 
   /* Check if the stack is empty.  */
Index: i386-interix-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/i386-interix-tdep.c,v
retrieving revision 1.10
diff -u -r1.10 i386-interix-tdep.c
--- i386-interix-tdep.c	6 Jun 2003 23:32:59 -0000	1.10
+++ i386-interix-tdep.c	9 Sep 2003 21:21:11 -0000
@@ -128,8 +128,8 @@
      it'll make the correct test.  */
   return ((get_frame_type (thisframe) == SIGTRAMP_FRAME)
           || (chain != 0
-              && !inside_entry_file (read_memory_integer
-                                     (thisframe->frame + 4, 4))));
+              && !deprecated_inside_entry_file (read_memory_integer
+						(thisframe->frame + 4, 4))));
 }
 
 /* We want to find the previous frame, which on Interix is tricky when
Index: m32r-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/m32r-tdep.c,v
retrieving revision 1.17
diff -u -r1.17 m32r-tdep.c
--- m32r-tdep.c	1 Aug 2003 21:14:33 -0000	1.17
+++ m32r-tdep.c	9 Sep 2003 21:21:12 -0000
@@ -832,7 +832,7 @@
 
   /* This is meant to halt the backtrace at "_start".  Make sure we
      don't halt it at a generic dummy frame. */
-  if (inside_entry_file (func))
+  if (deprecated_inside_entry_file (func))
     return;
 
   /* Check if the stack is empty.  */
Index: m68hc11-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/m68hc11-tdep.c,v
retrieving revision 1.88
diff -u -r1.88 m68hc11-tdep.c
--- m68hc11-tdep.c	18 Aug 2003 17:35:16 -0000	1.88
+++ m68hc11-tdep.c	9 Sep 2003 21:21:13 -0000
@@ -896,7 +896,7 @@
 
   /* This is meant to halt the backtrace at "_start".  Make sure we
      don't halt it at a generic dummy frame. */
-  if (inside_entry_file (func))
+  if (deprecated_inside_entry_file (func))
     return;
 
   /* Hopefully the prologue analysis either correctly determined the
Index: mdebugread.c
===================================================================
RCS file: /cvs/src/src/gdb/mdebugread.c,v
retrieving revision 1.47
diff -u -r1.47 mdebugread.c
--- mdebugread.c	11 Jun 2003 23:29:47 -0000	1.47
+++ mdebugread.c	9 Sep 2003 21:21:21 -0000
@@ -3627,8 +3627,8 @@
       if (objfile->ei.entry_point >= save_pst->textlow &&
 	  objfile->ei.entry_point < save_pst->texthigh)
 	{
-	  objfile->ei.entry_file_lowpc = save_pst->textlow;
-	  objfile->ei.entry_file_highpc = save_pst->texthigh;
+	  objfile->ei.deprecated_entry_file_lowpc = save_pst->textlow;
+	  objfile->ei.deprecated_entry_file_highpc = save_pst->texthigh;
 	}
 
       /* The objfile has its functions reordered if this partial symbol
Index: mips-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/mips-tdep.c,v
retrieving revision 1.228
diff -u -r1.228 mips-tdep.c
--- mips-tdep.c	9 Sep 2003 04:41:32 -0000	1.228
+++ mips-tdep.c	9 Sep 2003 21:21:29 -0000
@@ -2623,7 +2623,7 @@
   CORE_ADDR tmp;
   CORE_ADDR saved_pc = DEPRECATED_FRAME_SAVED_PC (frame);
 
-  if (saved_pc == 0 || inside_entry_file (saved_pc))
+  if (saved_pc == 0 || deprecated_inside_entry_file (saved_pc))
     return 0;
 
   /* Check if the PC is inside a call stub.  If it is, fetch the
Index: mipsread.c
===================================================================
RCS file: /cvs/src/src/gdb/mipsread.c,v
retrieving revision 1.11
diff -u -r1.11 mipsread.c
--- mipsread.c	25 Feb 2003 21:36:18 -0000	1.11
+++ mipsread.c	9 Sep 2003 21:21:31 -0000
@@ -113,15 +113,15 @@
 
   if (mainline
       && objfile->ei.entry_point != INVALID_ENTRY_POINT
-      && objfile->ei.entry_file_lowpc == INVALID_ENTRY_LOWPC)
+      && objfile->ei.deprecated_entry_file_lowpc == INVALID_ENTRY_LOWPC)
     {
       struct minimal_symbol *m;
 
       m = lookup_minimal_symbol_by_pc (objfile->ei.entry_point);
       if (m && DEPRECATED_SYMBOL_NAME (m + 1))
 	{
-	  objfile->ei.entry_file_lowpc = SYMBOL_VALUE_ADDRESS (m);
-	  objfile->ei.entry_file_highpc = SYMBOL_VALUE_ADDRESS (m + 1);
+	  objfile->ei.deprecated_entry_file_lowpc = SYMBOL_VALUE_ADDRESS (m);
+	  objfile->ei.deprecated_entry_file_highpc = SYMBOL_VALUE_ADDRESS (m + 1);
 	}
     }
 
Index: ns32k-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/ns32k-tdep.c,v
retrieving revision 1.56
diff -u -r1.56 ns32k-tdep.c
--- ns32k-tdep.c	9 Sep 2003 04:41:32 -0000	1.56
+++ ns32k-tdep.c	9 Sep 2003 21:21:32 -0000
@@ -309,7 +309,7 @@
      FP value, and that address is saved at the previous FP value as a
      4-byte word.  */
 
-  if (inside_entry_file (get_frame_pc (frame)))
+  if (deprecated_inside_entry_file (get_frame_pc (frame)))
     return 0;
 
   return (read_memory_integer (get_frame_base (frame), 4));
Index: objfiles.c
===================================================================
RCS file: /cvs/src/src/gdb/objfiles.c,v
retrieving revision 1.34
diff -u -r1.34 objfiles.c
--- objfiles.c	21 Aug 2003 22:35:33 -0000	1.34
+++ objfiles.c	9 Sep 2003 21:21:33 -0000
@@ -783,10 +783,10 @@
       objfile->ei.entry_func_highpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
     }
 
-  if (objfile->ei.entry_file_lowpc != INVALID_ENTRY_LOWPC)
+  if (objfile->ei.deprecated_entry_file_lowpc != INVALID_ENTRY_LOWPC)
     {
-      objfile->ei.entry_file_lowpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
-      objfile->ei.entry_file_highpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
+      objfile->ei.deprecated_entry_file_lowpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
+      objfile->ei.deprecated_entry_file_highpc += ANOFFSET (delta, SECT_OFF_TEXT (objfile));
     }
 
   if (objfile->ei.main_func_lowpc != INVALID_ENTRY_LOWPC)
Index: objfiles.h
===================================================================
RCS file: /cvs/src/src/gdb/objfiles.h,v
retrieving revision 1.23
diff -u -r1.23 objfiles.h
--- objfiles.h	21 Aug 2003 22:35:33 -0000	1.23
+++ objfiles.h	9 Sep 2003 21:21:35 -0000
@@ -42,14 +42,28 @@
    to the user executable's recorded entry point, as if the call had been made
    directly by the kernel.
 
-   The traditional gdb method of using this info is to use the recorded entry
-   point to set the variables entry_file_lowpc and entry_file_highpc from
-   the debugging information, where these values are the starting address
-   (inclusive) and ending address (exclusive) of the instruction space in the
-   executable which correspond to the "startup file", I.E. crt0.o in most
-   cases.  This file is assumed to be a startup file and frames with pc's
-   inside it are treated as nonexistent.  Setting these variables is necessary
-   so that backtraces do not fly off the bottom of the stack.
+   The traditional gdb method of using this info is to use the
+   recorded entry point to set the variables
+   deprecated_entry_file_lowpc and deprecated_entry_file_highpc from
+   the debugging information, where these values are the starting
+   address (inclusive) and ending address (exclusive) of the
+   instruction space in the executable which correspond to the
+   "startup file", I.E. crt0.o in most cases.  This file is assumed to
+   be a startup file and frames with pc's inside it are treated as
+   nonexistent.  Setting these variables is necessary so that
+   backtraces do not fly off the bottom of the stack.
+
+   NOTE: cagney/2003-09-09: It turns out that this "traditional"
+   method doesn't work.  Corinna writes: ``It turns out that the call
+   to deprecated_inside_entry_file destroys a meaningful backtrace
+   under some conditions.  E. g. the backtrace tests in the asm-source
+   testcase are broken for some targets.  In this test the functions
+   are all implemented as part of one file and the testcase is not
+   necessarily linked with a start file (depending on the target).
+   What happens is, that the first frame is printed normaly and
+   following frames are treated as being inside the enttry file then.
+   This way, only the #0 frame is printed in the backtrace output.''
+   Ref "frame.c" "NOTE: vinschen/2003-04-01".
 
    Gdb also supports an alternate method to avoid running off the bottom
    of the stack.
@@ -115,8 +129,8 @@
     /* Start (inclusive) and end (exclusive) of object file containing the
        entry point. */
 
-    CORE_ADDR entry_file_lowpc;
-    CORE_ADDR entry_file_highpc;
+    CORE_ADDR deprecated_entry_file_lowpc;
+    CORE_ADDR deprecated_entry_file_highpc;
 
     /* Start (inclusive) and end (exclusive) of the user code main() function. */
 
Index: rs6000-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/rs6000-tdep.c,v
retrieving revision 1.150
diff -u -r1.150 rs6000-tdep.c
--- rs6000-tdep.c	9 Sep 2003 04:41:32 -0000	1.150
+++ rs6000-tdep.c	9 Sep 2003 21:21:39 -0000
@@ -1818,7 +1818,7 @@
        frame.  */
     return read_memory_addr (get_frame_base (thisframe), wordsize);
 
-  if (inside_entry_file (get_frame_pc (thisframe))
+  if (deprecated_inside_entry_file (get_frame_pc (thisframe))
       || get_frame_pc (thisframe) == entry_point_address ())
     return 0;
 
Index: sh-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sh-tdep.c,v
retrieving revision 1.137
diff -u -r1.137 sh-tdep.c
--- sh-tdep.c	8 Sep 2003 11:26:20 -0000	1.137
+++ sh-tdep.c	9 Sep 2003 21:21:42 -0000
@@ -487,7 +487,8 @@
 				   get_frame_base (frame),
 				   get_frame_base (frame)))
     return get_frame_base (frame);	/* dummy frame same as caller's frame */
-  if (get_frame_pc (frame) && !inside_entry_file (get_frame_pc (frame)))
+  if (get_frame_pc (frame)
+      && !deprecated_inside_entry_file (get_frame_pc (frame)))
     return read_memory_integer (get_frame_base (frame)
 				+ get_frame_extra_info (frame)->f_offset, 4);
   else
Index: sh64-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/sh64-tdep.c,v
retrieving revision 1.2
diff -u -r1.2 sh64-tdep.c
--- sh64-tdep.c	9 Sep 2003 15:00:23 -0000	1.2
+++ sh64-tdep.c	9 Sep 2003 21:21:45 -0000
@@ -745,7 +745,8 @@
 				   get_frame_base (frame),
 				   get_frame_base (frame)))
     return get_frame_base (frame);	/* dummy frame same as caller's frame */
-  if (get_frame_pc (frame) && !inside_entry_file (get_frame_pc (frame)))
+  if (get_frame_pc (frame)
+      && !deprecated_inside_entry_file (get_frame_pc (frame)))
     {
       int media_mode = pc_is_isa32 (get_frame_pc (frame));
       int size;
Index: symfile.c
===================================================================
RCS file: /cvs/src/src/gdb/symfile.c,v
retrieving revision 1.103
diff -u -r1.103 symfile.c
--- symfile.c	3 Sep 2003 21:01:44 -0000	1.103
+++ symfile.c	9 Sep 2003 21:21:53 -0000
@@ -327,8 +327,8 @@
       /* Examination of non-executable.o files.  Short-circuit this stuff.  */
       objfile->ei.entry_point = INVALID_ENTRY_POINT;
     }
-  objfile->ei.entry_file_lowpc = INVALID_ENTRY_LOWPC;
-  objfile->ei.entry_file_highpc = INVALID_ENTRY_HIGHPC;
+  objfile->ei.deprecated_entry_file_lowpc = INVALID_ENTRY_LOWPC;
+  objfile->ei.deprecated_entry_file_highpc = INVALID_ENTRY_HIGHPC;
   objfile->ei.entry_func_lowpc = INVALID_ENTRY_LOWPC;
   objfile->ei.entry_func_highpc = INVALID_ENTRY_HIGHPC;
   objfile->ei.main_func_lowpc = INVALID_ENTRY_LOWPC;
Index: vax-tdep.c
===================================================================
RCS file: /cvs/src/src/gdb/vax-tdep.c,v
retrieving revision 1.59
diff -u -r1.59 vax-tdep.c
--- vax-tdep.c	9 Sep 2003 04:41:32 -0000	1.59
+++ vax-tdep.c	9 Sep 2003 21:21:53 -0000
@@ -188,7 +188,7 @@
 {
   /* In the case of the VAX, the frame's nominal address is the FP value,
      and 12 bytes later comes the saved previous FP value as a 4-byte word.  */
-  if (inside_entry_file (get_frame_pc (frame)))
+  if (deprecated_inside_entry_file (get_frame_pc (frame)))
     return (0);
 
   return (read_memory_integer (get_frame_base (frame) + 12, 4));

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