From 44d83468ec8e5fccf904d66b752ac36e07d66c56 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 28 Oct 2016 01:09:06 +0100 Subject: [PATCH] Fix gdb.base/maint.exp regressions This commit fixes these regressions: FAIL: gdb.base/maint.exp: mt set per on for expand-symtabs FAIL: gdb.base/maint.exp: maint set per-command on caused by commit 1e3b796d58ac ("Change command stats reporting to use class"). gdb.log shows that the command stats are now printing garbage: (gdb) mt set per on Command execution time: -6.-419590 (cpu), 1467139648.-7706296840 (wall) Space used: 9809920 (-33276528 for this command) (gdb) FAIL: gdb.base/maint.exp: mt set per on for expand-symtabs while there should have been no output at all. The stats printing is done from within the scoped_command_stats's destructor, depending on whether some flags in the object are set. The problem is simply that scoped_command_stats's ctor misses clearing those flags on some paths. Since scoped_command_stats objects are allocated on the stack, whether you'll see the regression simply depends on whatever happens to already be on the stack space the object occupies. gdb/ChangeLog: 2016-10-28 Pedro Alves * maint.c (scoped_command_stats::scoped_command_stats): Clear m_space_enabled, m_time_enabled and m_symtab_enabled. --- gdb/ChangeLog | 5 +++++ gdb/maint.c | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7b5ff1af95..c93d51357c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2016-10-28 Pedro Alves + + * maint.c (scoped_command_stats::scoped_command_stats): Clear + m_space_enabled, m_time_enabled and m_symtab_enabled. + 2016-10-28 Markus Metzger * btrace.c (bfun_s): New typedef. diff --git a/gdb/maint.c b/gdb/maint.c index e0ef4fde67..25a495caea 100644 --- a/gdb/maint.c +++ b/gdb/maint.c @@ -887,6 +887,8 @@ scoped_command_stats::scoped_command_stats (bool msg_type) m_space_enabled = 1; #endif } + else + m_space_enabled = 0; if (msg_type == 0 || per_command_time) { @@ -894,6 +896,8 @@ scoped_command_stats::scoped_command_stats (bool msg_type) gettimeofday (&m_start_wall_time, NULL); m_time_enabled = 1; } + else + m_time_enabled = 0; if (msg_type == 0 || per_command_symtab) { @@ -905,6 +909,8 @@ scoped_command_stats::scoped_command_stats (bool msg_type) m_start_nr_blocks = nr_blocks; m_symtab_enabled = 1; } + else + m_symtab_enabled = 0; /* Initalize timer to keep track of how long we waited for the user. */ reset_prompt_for_continue_wait_time (); -- 2.34.1