From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20956 invoked by alias); 14 Jan 2012 00:42:10 -0000 Received: (qmail 20946 invoked by uid 22791); 14 Jan 2012 00:42:07 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-yw0-f73.google.com (HELO mail-yw0-f73.google.com) (209.85.213.73) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 14 Jan 2012 00:41:53 +0000 Received: by yhpp56 with SMTP id p56so118361yhp.0 for ; Fri, 13 Jan 2012 16:41:52 -0800 (PST) Received: by 10.236.125.34 with SMTP id y22mr4459314yhh.4.1326501712701; Fri, 13 Jan 2012 16:41:52 -0800 (PST) Received: by 10.236.125.34 with SMTP id y22mr4459297yhh.4.1326501712646; Fri, 13 Jan 2012 16:41:52 -0800 (PST) Received: from wpzn3.hot.corp.google.com (216-239-44-65.google.com [216.239.44.65]) by gmr-mx.google.com with ESMTPS id r74si3709535yhh.4.2012.01.13.16.41.52 (version=TLSv1/SSLv3 cipher=AES128-SHA); Fri, 13 Jan 2012 16:41:52 -0800 (PST) Received: from ruffy.mtv.corp.google.com (ruffy.mtv.corp.google.com [172.18.110.50]) by wpzn3.hot.corp.google.com (Postfix) with ESMTP id 767A0100079; Fri, 13 Jan 2012 16:41:52 -0800 (PST) Received: by ruffy.mtv.corp.google.com (Postfix, from userid 67641) id 083902461A8; Fri, 13 Jan 2012 16:41:51 -0800 (PST) To: gdb-patches@sourceware.org, brobecker@adacore.com cc: marc.khouzam@ericsson.com Subject: [RFA] restore "mt set python print-stack" for gdb 7.4 Message-Id: <20120114004152.083902461A8@ruffy.mtv.corp.google.com> Date: Sat, 14 Jan 2012 04:06:00 -0000 From: dje@google.com (Doug Evans) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-01/txt/msg00509.txt.bz2 Hi. Eclipse used this command. It's gone now from the current Eclipse sources, but some releases exist that use it. In order to not break things for users we're going to add this command back for 7.4 (but keep it out of cvs head). I've made this command properly interact with the new "set python print-stack" parameter even though the new version uses an enum. Tested with Eclipse 3.7.1, verified Eclipse debugging sessions now properly start. Regression tested on amd64-linux. Joel, ok to check into the branch? 2012-01-13 Doug Evans Restore "mt set python print-stack on|off" for 7.4. * NEWS: Update to indicate "mt set python print-stack" is deprecated, but not deleted yet, and will be gone in gdb 7.5. * python/python.c (maint_set_python_list, maint_show_python_list): New global vars. (maint_set_python, maint_show_python): New functions. (gdbpy_should_print_stack_deprecated): New global var. (set_maint_python_print_stack): New function. (show_maint_python_print_stack): New function. (_initialize_python): Define commands "mt set python print-stack on|off" and ""mt show python print-stack". Index: NEWS =================================================================== RCS file: /cvs/src/src/gdb/NEWS,v retrieving revision 1.472.2.3 diff -u -p -r1.472.2.3 NEWS --- NEWS 1 Jan 2012 21:47:08 -0000 1.472.2.3 +++ NEWS 14 Jan 2012 00:24:15 -0000 @@ -29,10 +29,11 @@ existing one. ** The "maint set python print-stack on|off" command has been - removed. A new command: "set python print-stack - none|full|message" has replaced it. Additionally, the default - for "print-stack" is now "message", which just prints the error - message without the stack trace. + deprecated and will be deleted in GDB 7.5. + A new command: "set python print-stack none|full|message" has + replaced it. Additionally, the default for "print-stack" is + now "message", which just prints the error message without + the stack trace. ** A prompt substitution hook (prompt_hook) is now available to the Python API. Index: python/python.c =================================================================== RCS file: /cvs/src/src/gdb/python/python.c,v retrieving revision 1.79.2.3 diff -u -p -r1.79.2.3 python.c --- python/python.c 6 Jan 2012 04:43:41 -0000 1.79.2.3 +++ python/python.c 14 Jan 2012 00:24:15 -0000 @@ -1104,6 +1104,58 @@ gdbpy_breakpoint_has_py_cond (struct bre #endif /* HAVE_PYTHON */ +/* Support for "mt set python print-stack on|off" is present in gdb 7.4 + to not break Eclipse. + ref: https://bugs.eclipse.org/bugs/show_bug.cgi?id=367788. */ + +/* Lists for 'maint set python' commands. */ + +static struct cmd_list_element *maint_set_python_list; +static struct cmd_list_element *maint_show_python_list; + +/* Function for use by 'maint set python' prefix command. */ + +static void +maint_set_python (char *args, int from_tty) +{ + help_list (maint_set_python_list, "maintenance set python ", + class_deprecated, gdb_stdout); +} + +/* Function for use by 'maint show python' prefix command. */ + +static void +maint_show_python (char *args, int from_tty) +{ + cmd_show_list (maint_show_python_list, from_tty, ""); +} + +/* True if we should print the stack when catching a Python error, + false otherwise. */ +static int gdbpy_should_print_stack_deprecated = 0; + +static void +set_maint_python_print_stack (char *args, int from_tty, + struct cmd_list_element *e) +{ + if (gdbpy_should_print_stack_deprecated) + gdbpy_should_print_stack = python_excp_full; + else + gdbpy_should_print_stack = python_excp_none; +} + +static void +show_maint_python_print_stack (struct ui_file *file, int from_tty, + struct cmd_list_element *c, const char *value) +{ + fprintf_filtered (file, + _("The mode of Python stack printing on error is" + " \"%s\".\n"), + gdbpy_should_print_stack == python_excp_full + ? "on" : "off"); +} + + /* Lists for 'set python' commands. */ @@ -1159,6 +1211,34 @@ This command is only a placeholder.") #endif /* HAVE_PYTHON */ ); + add_prefix_cmd ("python", no_class, maint_show_python, + _("Prefix command for python maintenance settings."), + &maint_show_python_list, "maintenance show python ", 0, + &maintenance_show_cmdlist); + add_prefix_cmd ("python", no_class, maint_set_python, + _("Prefix command for python maintenance settings."), + &maint_set_python_list, "maintenance set python ", 0, + &maintenance_set_cmdlist); + + add_setshow_boolean_cmd ("print-stack", class_maintenance, + &gdbpy_should_print_stack_deprecated, _("\ +Enable or disable printing of Python stack dump on error."), _("\ +Show whether Python stack will be printed on error."), _("\ +Enables or disables printing of Python stack traces."), + set_maint_python_print_stack, + show_maint_python_print_stack, + &maint_set_python_list, + &maint_show_python_list); + + /* Deprecate maint set/show python print-stack in favour of + non-maintenance alternatives. */ + cmd_name = "print-stack"; + cmd = lookup_cmd (&cmd_name, maint_set_python_list, "", -1, 0); + deprecate_cmd (cmd, "set python print-stack"); + cmd_name = "print-stack"; /* Reset name. */ + cmd = lookup_cmd (&cmd_name, maint_show_python_list, "", -1, 0); + deprecate_cmd (cmd, "show python print-stack"); + /* Add set/show python print-stack. */ add_prefix_cmd ("python", no_class, user_show_python, _("Prefix command for python preference settings."),