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]

Re: PATCH RFA: Fix MI stack frame output for synthetic frames


On Fri, Nov 08, 2002 at 05:38:38PM -0500, Andrew Cagney wrote:

> It should be possible to test the "<function called from gdb>" case. 
> All the more main-stream architectures now use dummy-frames so any one 
> of them can be used for the test.
> 
> Can you do that?


OK, how's this look?  I don't care about the names of the files or
anything like that.

[gdb/ChangeLog]
2002-11-09  Jason Molenda  (jason-cl@molenda.com)

        * stack.c (print_frame_info_base): Output complete FRAME tuple
        for synthesized frames.

[gdb/testsuite/ChangeLog]
2002-11-09  Jason Molenda  (jason-cl@molenda.com)

        * gdb.mi/mi-syn-frame.exp: New tests for synthetic frames in
        stack backtraces.
        * gdb.mi/inferior-mischief.c: Part of same.

It's probably not necessary, but I'll include the final plain text
of print_frame_info_base that I settled on for this patch so no
one needs to do unidiff decompression in their heads.  This change
introduces no new testsuite regressions.


  struct cleanup *uiout_cleanup;

  if (frame_in_dummy (fi) || fi->signal_handler_caller)
    {
      annotate_frame_begin (level == -1 ? 0 : level, fi->pc);
      uiout_cleanup = make_cleanup_ui_out_tuple_begin_end (uiout, "frame");

      /* Do this regardless of SOURCE because we don't have any source
         to list for this frame.  */
      if (level >= 0)
        {
          ui_out_text (uiout, "#");
          ui_out_field_fmt_int (uiout, 2, ui_left, "level", level);
        }
      if (ui_out_is_mi_like_p (uiout))
        {
          annotate_frame_address ();
          ui_out_field_core_addr (uiout, "addr", fi->pc);
          annotate_frame_address_end ();
        }
      if (frame_in_dummy (fi))
        {
          annotate_function_call ();
          ui_out_field_string (uiout, "func", "<function called from gdb>");
	}
      else if (fi->signal_handler_caller)
        {
	  annotate_signal_handler_caller ();
          ui_out_field_string (uiout, "func", "<signal handler called>");
        }
      ui_out_text (uiout, "\n");
      annotate_frame_end ();

      do_cleanups (uiout_cleanup);
      return;
    }

Attachment: pa.txt
Description: Text document


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