public inbox for archer-commits@sourceware.org
help / color / mirror / Atom feed
* [SCM]  archer-pmuldoon-python-backtrace: Fix summary mode, scalars, all and none output in the CLI
@ 2012-09-11 14:25 pmuldoon
  0 siblings, 0 replies; only message in thread
From: pmuldoon @ 2012-09-11 14:25 UTC (permalink / raw)
  To: archer-commits

The branch, archer-pmuldoon-python-backtrace has been updated
       via  ce5bf0ab811f2ef1fb528bcdcb6967808c67dc97 (commit)
      from  e66d17148bfb06c08f197b2ab82b4a0a6c368a2e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email.

- Log -----------------------------------------------------------------
commit ce5bf0ab811f2ef1fb528bcdcb6967808c67dc97
Author: Phil Muldoon <pmuldoon@redhat.com>
Date:   Tue Sep 11 15:25:08 2012 +0100

    Fix summary mode, scalars, all and none output in the CLI

-----------------------------------------------------------------------

Summary of changes:
 gdb/python/py-framefilter.c                 |   10 +-----
 gdb/testsuite/gdb.python/py-framefilter.c   |   27 ++++++++++++--
 gdb/testsuite/gdb.python/py-framefilter.exp |   52 ++++++++++++++++++++++-----
 3 files changed, 67 insertions(+), 22 deletions(-)

First 500 lines of diff:
diff --git a/gdb/python/py-framefilter.c b/gdb/python/py-framefilter.c
index 63cc439..f3b0aaa 100644
--- a/gdb/python/py-framefilter.c
+++ b/gdb/python/py-framefilter.c
@@ -481,8 +481,6 @@ enumerate_args (PyObject *iter,
 
   get_user_print_options (&opts);
 
-  opts.deref_ref = 1;
-
   if (! ui_out_is_mi_like_p (out))
     {
       /* True in "summary" mode, false otherwise.  */
@@ -1022,10 +1020,9 @@ py_print_frame (PyObject *filter, int print_level, int print_frame_info,
 	  annotate_frame_address ();
 	  ui_out_field_core_addr (out, "addr", gdbarch, address);
 	  annotate_frame_address_end ();
+	  ui_out_text (out, " in ");
 	}
 
-      ui_out_text (out, " in ");
-
       /* Print frame function.  */
       if (PyObject_HasAttrString (filter, "function"))
 	{
@@ -1254,11 +1251,6 @@ apply_frame_filter (struct frame_info *frame, int print_level,
   int success = 0;
   PyObject *iterable;
 
-  /* XXX: Does MI pay attention to this command? */
-  if (cli_print_frame_args_type != NULL)
-    /* Override print_args if the user option is set.  */
-    print_args = strcmp (cli_print_frame_args_type, "none");
-
   cleanups = ensure_python_env (gdbarch, current_language);
 
   iterable = bootstrap_python_frame_filters (frame);
diff --git a/gdb/testsuite/gdb.python/py-framefilter.c b/gdb/testsuite/gdb.python/py-framefilter.c
index 3e7f145..33476e7 100644
--- a/gdb/testsuite/gdb.python/py-framefilter.c
+++ b/gdb/testsuite/gdb.python/py-framefilter.c
@@ -15,11 +15,19 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#include <stdlib.h>
 
 void funca(void);
 int count = 0;
 
-void end_func (void)
+typedef struct
+{
+  char *nothing;
+  int f;
+  short s;
+} foobar;
+
+void end_func (int foo, char *bar, foobar *fb, foobar bf)
 {
   const char *str = "The End";
   const char *st2 = "Is Near";
@@ -48,13 +56,26 @@ void funcb(int j)
 
 void funca(void)
 {
+  foobar fb;
+  foobar *bf = NULL;
+
   if (count < 10)
     {
       count++;
       funcb(count);
     }
 
-  end_func();
+  fb.nothing = "Foo Bar";
+  fb.f = 42;
+  fb.s = 19;
+
+  bf = alloca (sizeof (foobar));
+  bf->nothing = alloca (128);
+  bf->nothing = "Bar Foo";
+  bf->f = 24;
+  bf->s = 91;
+
+  end_func(21, "Param", bf, fb);
   return;
 }
 
@@ -67,8 +88,6 @@ void func1(void)
 
 int func2(void)
 {
-  int foo = 42;
-
   func1();
   return 1;
 }
diff --git a/gdb/testsuite/gdb.python/py-framefilter.exp b/gdb/testsuite/gdb.python/py-framefilter.exp
index e08c349..d3da491 100644
--- a/gdb/testsuite/gdb.python/py-framefilter.exp
+++ b/gdb/testsuite/gdb.python/py-framefilter.exp
@@ -45,7 +45,6 @@ set remote_obj_python_file [remote_download host ${srcdir}/${subdir}/${testfile}
 gdb_reinitialize_dir $srcdir/$subdir
 gdb_test_no_output "set auto-load safe-path ${remote_obj_python_file}" "set auto-load safe-path"
 gdb_load ${binfile}
-gdb_test_no_output "set python print-stack full" "set auto-load safe-path"
 # Verify gdb loaded the script.
 gdb_test "info auto-load python-scripts" "Yes.*/${testfile}-gdb.py.*"
 
@@ -65,28 +64,63 @@ gdb_test "info frame-filter" \
     ".*1000.*Yes.*Elider.*100.*Yes.*Reverse.*10.*.*No.*Object.*1.*"
 # Test raw
 gdb_test "bt raw" \
-    ".*#0.*end_func.*#22.*in func1.*#27.*in main ().*"
+    ".*#0.*end_func.*#22.*in func1.*#27.*in main \\(\\).*"
 
 # Test reverse
 gdb_test "bt" \
-    ".*#0.*cnuf_dne.*#22.*in 1cnuf.*#27.*in niam ().*"
+    ".*#0.*cnuf_dne.*#22.*in 1cnuf.*#27.*in niam \\(\\).*"
 
 # Disable Reverse
 gdb_test_no_output "set python frame-filter disable global Reverse"
 gdb_test "bt" \
-    ".*#0.*end_func.*#22.*in func1.*#27.*in main ().*"
+    ".*#0.*end_func.*#22.*in func1.*#27.*in main \\(\\).*"
 
 gdb_test "bt -2" \
-    ".*#26.*func5.*#27.*in main ().*"
+    ".*#26.*func5.*#27.*in main \\(\\).*"
 
 gdb_test "bt 3" \
-    ".*#0.*end_func.*#1.*in funca ().*#2.*in funcb ().*"
+    ".*#0.*end_func.*#1.*in funca \\(\\).*#2.*in funcb \\(j=10\\).*"
 
 gdb_test "bt raw full" \
-    ".*#0.*end_func.*str = $hex \"The End\".*st2 = $hex \"Is Near\".*b = 12.*c = 5.*#1.*in funca ().*#2.*in funcb \\(j=10\\).*bar = \{a = 42, b = 84\}.*"
+    ".*#0.*end_func.*str = $hex \"The End\".*st2 = $hex \"Is Near\".*b = 12.*c = 5.*#1.*in funca \\(\\).*#2.*in funcb \\(j=10\\).*bar = \{a = 42, b = 84\}.*"
 
 gdb_test "bt full" \
-    ".*#0.*end_func.*str = $hex \"The End\".*st2 = $hex \"Is Near\".*b = 12.*c = 5.*#1.*in funca ().*#2.*in funcb \\(j=10\\).*bar = \{a = 42, b = 84\}.*#22.*in func1 \\(\\).*#23.*in func2 \\(\\).*foo = 42.*"
-
+    ".*#0.*end_func.*str = $hex \"The End\".*st2 = $hex \"Is Near\".*b = 12.*c = 5.*#1.*in funca \\(\\).*#2.*in funcb \\(j=10\\).*bar = \{a = 42, b = 84\}.*#22.*in func1 \\(\\).*#23.*in func2 \\(\\).*"
+
+# Test set print frame-arguments
+# none
+gdb_test_no_output "set print frame-arguments none" "turn off frame arguments"
+gdb_test "bt raw 1" \
+    "#0.*end_func \\(foo=\.\.\., bar=\.\.\., fb=\.\.\., bf=\.\.\.\\) at .*py-framefilter.c.*" \
+    "bt raw no args"
+gdb_test "bt 1" \
+    "#0.*end_func \\(foo=\.\.\., bar=\.\.\., fb=\.\.\., bf=\.\.\.\\) at .*py-framefilter.c.*" \
+    "bt full no args"
+# scalars
+gdb_test_no_output "set print frame-arguments scalars" "turn off frame arguments"
+gdb_test "bt raw 1" \
+    "#0.*end_func \\(foo=21, bar=$hex \"Param\", fb=$hex, bf=\.\.\.\\) at .*py-framefilter.c.*" \
+    "bt raw scalars"
+
+gdb_test "bt 1" \
+    "#0.*end_func \\(foo=21, bar=$hex \"Param\", fb=$hex, bf=\.\.\.\\) at .*py-framefilter.c.*" \
+    "bt scalars"
+# all
+gdb_test_no_output "set print frame-arguments all" "turn off frame arguments"
+gdb_test "bt raw 1" \
+    "#0.*end_func \\(foo=21, bar=$hex \"Param\", fb=$hex, bf=\{nothing = $hex \"Foo Bar\", f = 42, s = 19\}\\) at .*py-framefilter.c.*" \
+    "bt raw all args"
+gdb_test "bt 1" \
+    "#0.*end_func \\(foo=21, bar=$hex \"Param\", fb=$hex, bf=\{nothing = $hex \"Foo Bar\", f = 42, s = 19\}\\) at .*py-framefilter.c.*" \
+    "bt all args"
+
+# set print address off
+gdb_test_no_output "set print address off" "turn off address printing"
+gdb_test "bt raw 1" \
+    "#0  end_func \\(foo=21, bar=\"Param\", fb=, bf=\{nothing = \"Foo Bar\", f = 42, s = 19\}\\) at .*py-framefilter.c.*" \
+    "bt raw no address"
+gdb_test "bt 1" \
+    "#0  end_func \\(foo=21, bar=\"Param\", fb=, bf=\{nothing = \"Foo Bar\", f = 42, s = 19\}\\) at .*py-framefilter.c.*" \
+    "bt no addresss"
 
 remote_file host delete ${remote_python_file}


hooks/post-receive
--
Repository for Project Archer.


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2012-09-11 14:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-09-11 14:25 [SCM] archer-pmuldoon-python-backtrace: Fix summary mode, scalars, all and none output in the CLI pmuldoon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).