Browse Source
I noticed yesterday that if gdb output is redirected to a file, the pager will still be active. This is irritating, because the output isn't actually visible -- just the pager prompt. Looking in bugzilla, I found that this had been filed 17 years ago, as PR cli/8798. This patch fixes the bug. It changes the pagination code to query the particular ui-file to see if paging is allowable. The ui-file implementations are changed so that only the stdout implementation and a tee (where one sub-file is stdout) can page. Regression tested on x86-64 Fedora 34. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=8798binutils-2_38-branch
3 changed files with 72 additions and 1 deletions
@ -0,0 +1,51 @@ |
|||
# Copyright (C) 2021 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 <http://www.gnu.org/licenses/>. |
|||
|
|||
# Do not run if gdb debug is enabled as it will interfere with log redirect. |
|||
if [gdb_debug_enabled] { |
|||
untested "debug is enabled" |
|||
return 0 |
|||
} |
|||
|
|||
gdb_start |
|||
|
|||
gdb_test_no_output "set width 100" |
|||
gdb_test_no_output "set height 5" |
|||
gdb_test_no_output "set pagination on" |
|||
|
|||
# Test that logging redirect disables the pager. |
|||
set log_name [standard_output_file log.txt] |
|||
gdb_test_no_output "set logging file $log_name" \ |
|||
"set logging filename" |
|||
gdb_test_no_output "set logging redirect on" |
|||
gdb_test "set logging enabled on" "Copying debug output to .*" |
|||
set ok 1 |
|||
set str "1\\n2\\n3\\n4\\n5\\n" |
|||
gdb_test_multiple "printf \"$str\"" "printf without paging" { |
|||
-re "$pagination_prompt" { |
|||
set ok 0 |
|||
send_gdb "c\n" |
|||
exp_continue |
|||
} |
|||
-re "\r\n$gdb_prompt $" { |
|||
# Ok. |
|||
} |
|||
} |
|||
if {$ok} { |
|||
pass "printf without paging" |
|||
} else { |
|||
fail "printf without paging" |
|||
} |
|||
gdb_test "set logging enabled off" "Done logging to .*" |
|||
Loading…
Reference in new issue