From 4d6cceb4e40a057dbe4d9ad94b0641d5f4725c09 Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Tue, 18 Aug 2015 14:02:03 -0700 Subject: PR mi/18833 gdb.execute ("set param value", to_string=True) will crash gdb if using MI gdb/ChangeLog: * cli/cli-logging.c (pop_output_files): Don't restore redirection if MI-like. * mi/mi-out.c: #include "vec.h". (ui_filep): New type. (DEV_VEC_P (ui_filep)): New type. (struct ui_out_data) : Delete. (struct ui_out_data) : New member. (mi_ui_out_impl): Add data_destroy field. (mi_field_string, mi_field_fmt): Update. (mi_flush, mi_redirect, field_separator): Update. (mi_open, mi_close): Update. (mi_out_buffered, mi_out_rewind, mi_out_put): Update. (mi_out_data_ctor, mi_out_data_dtor): New functions. (mi_out_new): Call mi_out_data_ctor. testsuite/gdb/ChangeLog: * lib/gdb.exp (skip_python_tests_prompt): Renamed from skip_python_tests. New arg prompt_regexp. (skip_python_tests): New function. * lib/mi-support.exp (mi_skip_python_tests): New function. * gdb.python/py-mi-objfile-gdb.py: New file. * gdb.python/py-mi-objfile.c: New file. * gdb.python/py-mi-objfile.exp: New file. --- gdb/testsuite/gdb.python/py-mi-objfile-gdb.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 gdb/testsuite/gdb.python/py-mi-objfile-gdb.py (limited to 'gdb/testsuite/gdb.python/py-mi-objfile-gdb.py') diff --git a/gdb/testsuite/gdb.python/py-mi-objfile-gdb.py b/gdb/testsuite/gdb.python/py-mi-objfile-gdb.py new file mode 100644 index 0000000..6e41773 --- /dev/null +++ b/gdb/testsuite/gdb.python/py-mi-objfile-gdb.py @@ -0,0 +1,27 @@ +# Copyright (C) 2015 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# This file is part of the GDB testsuite. + +import gdb + +# PR 18833 +# We want to have two levels of redirection while MI is current_uiout. +# This will create one for to_string=True and then another for the +# parameter change notification. +gdb.execute("set width 101", to_string=True) +# And finally a command that will use the original MI stream, which in a +# buggy gdb will use just-freed data. +gdb.execute("list") -- cgit v1.1