From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 106398 invoked by alias); 8 Oct 2017 20:03:16 -0000 Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org Received: (qmail 106385 invoked by uid 89); 8 Oct 2017 20:03:15 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.6 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RP_MATCHES_RCVD,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: eggs.gnu.org Received: from eggs.gnu.org (HELO eggs.gnu.org) (208.118.235.92) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 08 Oct 2017 20:03:13 +0000 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e1Hn1-0000t8-Ku for gdb@sourceware.org; Sun, 08 Oct 2017 16:03:12 -0400 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:43426) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e1Hn1-0000t4-HN; Sun, 08 Oct 2017 16:03:07 -0400 Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4421 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1e1Hn0-0001FK-Gy; Sun, 08 Oct 2017 16:03:07 -0400 Date: Sun, 08 Oct 2017 20:03:00 -0000 Message-Id: <83o9phs8zw.fsf@gnu.org> From: Eli Zaretskii To: Simon Marchi CC: gdb@sourceware.org In-reply-to: (message from Simon Marchi on Sun, 8 Oct 2017 15:24:21 -0400) Subject: Re: Breakpoint commands in MI mode and "backtrace" Reply-to: Eli Zaretskii References: <8360bqt0im.fsf@gnu.org> <8a3d7153-7486-032f-aabc-6c3453f96459@simark.ca> <83shetsdg2.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-IsSubscribed: yes X-SW-Source: 2017-10/txt/msg00025.txt.bz2 > Cc: gdb@sourceware.org > From: Simon Marchi > Date: Sun, 8 Oct 2017 15:24:21 -0400 > > But here's the equivalent version with the corresponding cleanup, > that applies on the 8.0 branch: > > diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c > index f1db954a69..34ae4966de 100644 > --- a/gdb/cli/cli-script.c > +++ b/gdb/cli/cli-script.c > @@ -472,6 +472,8 @@ print_command_trace (const char *cmd) > printf_filtered ("%s\n", cmd); > } > > +static void restore_interp (void *arg); > + > enum command_control_type > execute_control_command (struct command_line *cmd) > { > @@ -491,8 +493,14 @@ execute_control_command (struct command_line *cmd) > { > /* A simple command, execute it and return. */ > std::string new_line = insert_user_defined_cmd_args (cmd->line); > - execute_command (&new_line[0], 0); > + > + struct interp *old_interp = interp_set_temp (INTERP_CONSOLE); > + struct cleanup *old_chain = make_cleanup (restore_interp, old_interp); > + > + current_interpreter ()->exec (&new_line[0]); > ret = cmd->control_type; > + > + do_cleanups (old_chain); > break; > } Thanks, this works, but it seems to fail hookpost hooks. The Emacs .gdbinit file defines a hookpost-backtrace command to produce a Lisp-level backtrace, and with this change that fails: ~"Lisp Backtrace:\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" &"Argument to arithmetic operation not a number or boolean.\n" Whereas without the patch, the C-level backtrace is not shown, but the Lisp-level backtrace is shown correctly: ~"Lisp Backtrace:\n" ~"\"redraw-display\"" ~" (0x82de90)\n" ~"\"funcall-interactively\"" ~" (0x82de88)\n" ~"\"call-interactively\"" ~" (0x82e1e0)\n" ~"\"command-execute\"" ~" (0x82e738)\n" ~"\"execute-extended-command\"" ~" (0x82ee20)\n" ~"\"funcall-interactively\"" ~" (0x82ee18)\n" ~"\"call-interactively\"" ~" (0x82f220)\n" ~"\"command-execute\"" ~" (0x82f748)\n" > > In any case, there are more instances of calls to execute_command in > > that function, and I guess they all need to be changed like that? > > I don't see any other call. You are right, sorry. Thanks.