2013-01-01 07:33:28 +01:00
# Copyright 1992-2013 Free Software Foundation, Inc.
1999-04-16 03:35:26 +02:00
# 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
2007-08-23 20:14:19 +02:00
# the Free Software Foundation; either version 3 of the License, or
1999-04-16 03:35:26 +02:00
# (at your option) any later version.
2007-08-23 20:14:19 +02:00
#
1999-04-16 03:35:26 +02:00
# 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.
2007-08-23 20:14:19 +02:00
#
1999-04-16 03:35:26 +02:00
# You should have received a copy of the GNU General Public License
2007-08-23 20:14:19 +02:00
# along with this program. If not, see <http://www.gnu.org/licenses/>.
1999-04-16 03:35:26 +02:00
# This file was written by Michael Snyder (msnyder@cygnus.com)
set testfile "setshow"
2003-01-20 16:40:07 +01:00
set srcfile ${testfile}.c
1999-04-16 03:35:26 +02:00
set binfile ${objdir}/${subdir}/${testfile}
2003-01-20 16:40:07 +01:00
if { [gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile} executable {debug}] != "" } {
2006-08-10 07:27:22 +02:00
untested setshow.exp
return -1
1999-04-16 03:35:26 +02:00
}
# Start with a fresh gdb
gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
# make sure $pc is sane, in case we're talking to a board.
if { ![runto_main] } {
gdb_suppress_tests;
}
#
# Test gdb set and show commands.
# Add tests here for show and set that don't fit neatly elsewhere.
# FIXME: many rudimentary tests for set and show commands have been
# added below, but most do nothing more than check that a
# variable has been set successfully, ie. they do not test
# whether setting the variable has had the desired effect.
#
#test default annotation_level is 0
gdb_test "show annotate" "Annotation_level is 0..*" "default annotation_level is zero"
#test set annotate 2
2010-05-28 01:44:51 +02:00
2011-04-20 16:56:49 +02:00
# Here we need to fiddle with prompts.
set old_gdb_prompt $gdb_prompt
set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n"
2010-05-28 01:44:51 +02:00
gdb_test_multiple "set annotate 2" "set annotate 2" {
2011-04-20 16:56:49 +02:00
-re "\r\n$gdb_prompt$" {
pass "set annotate 2"
1999-04-16 03:35:26 +02:00
}
2010-05-28 01:44:51 +02:00
}
1999-04-16 03:35:26 +02:00
2010-05-28 01:44:51 +02:00
gdb_test_multiple "show annotate" "show annotate 2" {
2011-04-20 16:56:49 +02:00
-re ".*\032\032post-prompt.*Annotation_level is 2..*\032\032pre-prompt.*$old_gdb_prompt .*\032\032prompt.*$" {
2010-05-28 01:44:51 +02:00
pass "show annotate 2"
1999-04-16 03:35:26 +02:00
}
2010-05-28 01:44:51 +02:00
}
1999-04-16 03:35:26 +02:00
#test annotation_level 2
2010-05-28 01:44:51 +02:00
gdb_test_multiple "info line 1" "annotation_level 2" {
2011-04-20 16:56:49 +02:00
-re ".*\032\032post-prompt.*Line 1 of .* is at address .* but contains no code.*:1:0:beg:0x.*\032\032pre-prompt.*$old_gdb_prompt .*\032\032prompt.*$" {
2010-05-28 01:44:51 +02:00
pass "annotation_level 2"
1999-04-16 03:35:26 +02:00
}
2010-05-28 01:44:51 +02:00
}
1999-04-16 03:35:26 +02:00
2011-04-20 16:56:49 +02:00
# Restore the original prompt for the rest of the testsuite.
set gdb_prompt $old_gdb_prompt
1999-04-16 03:35:26 +02:00
#test set annotate 1
gdb_test "set annotate 1" ".*post-prompt.*" "set annotate 1"
gdb_test "show annotate" "Annotation_level is 1..*" "show annotate (1)"
#test annotation_level 1
gdb_test "info line 1" "Line 1 of .* is at address .* but contains no code.*:1:0:beg:0x.*" "annotation_level 1"
#test set annotate 0
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set annotate 0" "set annotate 0"
1999-04-16 03:35:26 +02:00
gdb_test "show annotate" "Annotation_level is 0..*" "show annotate (0)"
#test annotation_level 0
gdb_test "info line 1" "Line 1 of .* is at address .* but contains no code.*" "annotation_level 0"
2012-07-19 14:48:17 +02:00
gdb_test_no_output "set args ~"
gdb_test "show args" "Argument list to give program being debugged when it is started is \"~\"..*" \
"show args ~"
1999-04-16 03:35:26 +02:00
#test set args
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set args foo bar blup baz bubble" "set args"
1999-04-16 03:35:26 +02:00
#test show args
gdb_test "show args" "Argument list to give program being debugged when it is started is \"foo bar blup baz bubble\"..*" "show args"
# Don't test if we can't pass args or if we're using a stub.
2011-12-03 21:20:29 +01:00
if { !$use_gdb_stub && ![target_info exists noargs] } {
1999-04-16 03:35:26 +02:00
#test passing args
gdb_test "cont" "Continuing.*" "continuing"
delete_breakpoints
gdb_test "run" "Starting program:.*foo bar blup baz bubble.*" "passing args"
}
#test set check range on
2010-06-10 21:48:20 +02:00
gdb_test "set check range on" ".*" "set check range on"
1999-04-16 03:35:26 +02:00
#test show check range on
gdb_test "show check range" "Range checking is \"on\"\..*" "show check range (on)"
2009-08-08 01:28:13 +02:00
#test set check range off with trailing space
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set check range off " "set check range off"
2009-08-08 01:28:13 +02:00
#test show check range off
gdb_test "show check range" "Range checking is \"off\"\..*" "show check range (off)"
1999-04-16 03:35:26 +02:00
#test set check range auto
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set check range auto" "set check range auto"
1999-04-16 03:35:26 +02:00
#test show check range auto
2012-08-17 19:37:03 +02:00
gdb_test "show check range" "Range checking is \"auto; currently .*" "show check range (auto)"
# Test set check type on
gdb_test "set check type on" ".*" "set check type on"
# Test show check type on
gdb_test "show check type" "Strict type checking is on\..*" \
"show check type (on)"
# Test set check type off with trailing space
gdb_test_no_output "set check type off " "set check type off"
# Test show check type off
gdb_test "show check type" "Strict type checking is off\..*" \
"show check type (off)"
1999-04-16 03:35:26 +02:00
#test set complaints 100
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set complaints 100" "set complaints 100"
1999-04-16 03:35:26 +02:00
#test show complaints 100
gdb_test "show complaints" "Max number of complaints about incorrect symbols is 100..*" "show complaints (100)"
#test set complaints 0
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set complaints 0" "set complaints 0"
1999-04-16 03:35:26 +02:00
#test show complaints 0
gdb_test "show complaints" "Max number of complaints about incorrect symbols is 0..*" "show complaints (0)"
#test set confirm off
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set confirm off" "set confirm off"
1999-04-16 03:35:26 +02:00
#test show confirm off
gdb_test "show confirm" "Whether to confirm potentially dangerous operations is off..*" "show confirm (off)"
#test set confirm on
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set confirm on" "set confirm on"
1999-04-16 03:35:26 +02:00
#test show confirm on
gdb_test "show confirm" "Whether to confirm potentially dangerous operations is on..*" "show confirm (on)"
#test set editing off
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set editing off" "set editing off"
1999-04-16 03:35:26 +02:00
#test show editing off
gdb_test "show editing" "Editing of command lines as they are typed is off..*" "show editing (off)"
#test set editing on
2010-06-01 23:29:21 +02:00
#gdb_test_no_output "set editing on" "set editing on"
1999-04-16 03:35:26 +02:00
#test show editing on
#gdb_test "show editing" "Editing of command lines as they are typed is on..*" "show editing (on)"
#test set environment FOOBARBAZ
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set environment FOOBARBAZ = grbxgrbxgrbx" \
"set environment FOOBARBAZ"
1999-04-16 03:35:26 +02:00
#test show environment FOOBARBAZ
gdb_test "show environment FOOBARBAZ" "FOOBARBAZ = grbxgrbxgrbx.*" "show environment FOOBARBAZ"
#test set height 100
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set height 100" "set height 100"
1999-04-16 03:35:26 +02:00
#test show height 100
gdb_test "show height" "Number of lines gdb thinks are in a page is 100..*" "show height"
Accept "set foo unlimited" in integer/uinteger/zuinteger_unlimited commands.
Currently, several commands take "0" or "-1" to mean "unlimited".
"show" knows when to print "unlimited":
(gdb) show height
Number of lines gdb thinks are in a page is 45.
(gdb) set height 0
(gdb) show height
Number of lines gdb thinks are in a page is unlimited.
However, the user can't herself specify "unlimited" directly:
(gdb) set height unlimited
No symbol table is loaded. Use the "file" command.
(gdb)
This patch addresses that, by adjusting the set handler for all
integer/uinteger/zuinteger_unlimited commands to accept literal
"unlimited". It also installs a completer. Presently, we complete on
symbols by default, and at
<http://sourceware.org/ml/gdb-patches/2013-03/msg00864.html> I've
shown a WIP prototype that tried to keep that half working in these
commands. In the end, it turned out to be more complicated than
justifiable, IMO. It's super rare to want to pass the value of a
variable/symbol in the program to a GDB set/show knob. That'll still
work, it's just that we won't assist with completion anymore. This
patch just sticks with the simple, and completes on "unlimited", and
nothing else. This simplification means that
"set he<tab><tab>"
is all it takes to get to:
"set height unlimited"
The patch then goes through all integer/uinteger/zuinteger_unlimited
commands in the tree, and updates both the online help and the manual
to mention that "unlimited" is accepted in addition to 0/-1. In the
cases where the command had no online help text at all, this adds it.
I've tried to make the texts read in a way that "unlimited" is
suggested before "0" or "-1" is.
Tested on x86_64 Fedora 17.
gdb/
2013-04-10 Pedro Alves <palves@redhat.com>
* cli/cli-decode.c (integer_unlimited_completer): New function.
(add_setshow_integer_cmd, add_setshow_uinteger_cmd)
(add_setshow_zuinteger_unlimited_cmd): Install the "unlimited"
completer.
* cli/cli-setshow.c: Include "cli/cli-utils.h".
(is_unlimited_literal): New function.
(do_set_command): Handle literal "unlimited" arguments.
* frame.c (_initialize_frame) <set backtrace limit>: Document
"unlimited".
* printcmd.c (_initialize_printcmd) <set print
max-symbolic-offset>: Add help text.
* record-full.c (_initialize_record_full) <set record full
insn-number-max>: Likewise.
* record.c (_initialize_record) <set record
instruction-history-size, set record function-call-history-size>:
Add help text.
* ser-tcp.c (_initialize_ser_tcp) <set tcp connect-timeout>: Add
help text.
* tracepoint.c (_initialize_tracepoint) <set trace-buffer-size>:
Likewise.
* source.c (_initialize_source) <set listsize>: Add help text.
* utils.c (initialize_utils) <set height, set width>: Likewise.
<set pagination>: Mention "set height unlimited".
* valprint.c (_initialize_valprint) <set print elements, set print
repeats>: Document "unlimited".
gdb/doc/
2013-04-10 Pedro Alves <palves@redhat.com>
* gdb.texinfo (Process Record and Replay): Document that "set
record full insn-number-max", "set record
instruction-history-size" and "set record
function-call-history-size" accept "unlimited".
(Backtrace): Document that "set backtrace limit" accepts
"unlimited".
(List): Document that "set listsize" accepts "unlimited".
(Print Settings)" Document that "set print max-symbolic-offset",
"set print elements" and "set print repeats" accept "unlimited".
(Starting and Stopping Trace Experiments): Document that "set
trace-buffer-size" accepts "unlimited".
(Remote Configuration): Document that "set tcp connect-timeout"
accepts "unlimited".
(Command History): Document that "set history size" accepts
"unlimited".
(Screen Size): Document that "set height" and "set width" accepts
"unlimited". Adjust "set pagination"'s description to suggest
"set height unlimited" instead of "set height 0".
gdb/testsuite/
2013-04-10 Pedro Alves <palves@redhat.com>
* gdb.base/completion.exp: Test "set height", "set listsize" and
"set trace-buffer-size" completion.
* gdb.base/setshow.exp: Test "set height unlimited".
* gdb.trace/trace-buffer-size.exp: Test "set trace-buffer-size
unlimited".
2013-04-10 17:11:12 +02:00
# Back to infinite height to avoid pagers. While at it, check that
# literal "unlimited" works just as well as 0.
gdb_test_no_output "set height unlimited"
1999-04-16 03:35:26 +02:00
#test set history expansion on
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set history expansion on" "set history expansion on"
1999-04-16 03:35:26 +02:00
#test show history expansion on
gdb_test "show history expansion on" "History expansion on command input is on.*" "show history expansion"
#test set history filename foobar.baz
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set history filename foobar.baz" \
"set history filename foobar.baz"
1999-04-16 03:35:26 +02:00
#test show history filename foobar.baz
gdb_test "show history filename" "The filename in which to record the command history is \"foobar.baz\"..*" "show history filename (foobar.baz)"
#test set history save on
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set history save on" "set history save on"
1999-04-16 03:35:26 +02:00
#test show history save on
gdb_test "show history save" "Saving of the history record on exit is on..*" "show history save (on)"
#test set history size 100
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set history size 100" "set history size 100"
1999-04-16 03:35:26 +02:00
#test show history size 100
gdb_test "show history size" "The size of the command history is 100..*" "show history size (100)"
#test set language asm
2010-06-11 22:56:06 +02:00
gdb_test "set language asm" ".*" "set language asm"
1999-04-16 03:35:26 +02:00
#test show language asm
gdb_test "show language" "The current source language is \"asm\"..*" "show language (asm)"
2009-08-08 01:28:13 +02:00
#test set language java, with a trailing space
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set language java " "set language java"
2009-08-08 01:28:13 +02:00
#test show language java
gdb_test "show language" "The current source language is \"java\"..*" "show language (java)"
#test completion for set language.
gdb_test "complete set language min" "set language minimal" \
"complete set language minimal"
1999-04-16 03:35:26 +02:00
#test set language auto
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set language auto" "set language auto"
1999-04-16 03:35:26 +02:00
#test show language
gdb_test "show language" "The current source language is \"auto.*\"..*" "show language (auto)"
#test set listsize 100
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set listsize 100" "set listsize 100"
1999-04-16 03:35:26 +02:00
#test show listsize 100
gdb_test "show listsize" "Number of source lines gdb will list by default is 100..*" "show listsize (100)"
if ![board_info target exists gdb_prompt] {
#test set prompt (FooBarBaz)
set newprompt "\\(FooBarBaz\\)"
2010-05-28 01:44:51 +02:00
gdb_test_multiple "set prompt (FooBarBaz) " "set prompt FooBarBaz" {
2011-04-20 16:56:49 +02:00
-re "\[\r\n\]$newprompt $" {
2010-05-28 01:44:51 +02:00
pass "set prompt FooBarBaz"
}
1999-04-16 03:35:26 +02:00
}
#test show prompt (FooBarBaz)
2010-05-28 01:44:51 +02:00
gdb_test_multiple "show prompt" "show prompt FooBarBaz" {
-re "Gdb's prompt is \"$newprompt \"..* $" {
pass "show prompt FooBarBaz"
}
1999-04-16 03:35:26 +02:00
}
#test set prompt (gdb)
2010-05-28 01:44:51 +02:00
gdb_test_multiple "set prompt (gdb) " "set prompt gdb" {
2011-04-20 16:56:49 +02:00
-re "\[\r\n\]$gdb_prompt $" {
2010-05-28 01:44:51 +02:00
pass "set prompt gdb"
}
1999-04-16 03:35:26 +02:00
}
}
#test set radix 11
gdb_test "set radix 11" "Unsupported output radix ``decimal 11''; output radix unchanged..*" "set radix 11"
#test set radix 16
gdb_test "set radix 16" "Input and output radices now set to decimal 16, hex 10, octal 20..*" "set radix 16"
#test show radix 16
gdb_test "show radix" "Input and output radices set to decimal 16, hex 10, octal 20..*" "show radix (16)"
#test set radix 10
gdb_test "set radix" "Input and output radices now set to decimal 10, hex a, octal 12..*" "set radix 10"
#test show radix 10
gdb_test "show radix" "Input and output radices set to decimal 10, hex a, octal 12..*" "show radix (10)"
#test set width 90
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set width 90" "set width 90"
1999-04-16 03:35:26 +02:00
#test show width 90
gdb_test "show width" "Number of characters gdb thinks are in a line is 90..*" "show width (90)"
#test set write on
# This is only supported on targets which use exec.o.
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set write on" "set write on"
1999-04-16 03:35:26 +02:00
#test show write on
# This is only supported on targets which use exec.o.
gdb_test "show write" "Writing into executable and core files is on..*" "show write (on)"
#test show user
2010-06-01 23:29:21 +02:00
gdb_test_no_output "show user" "show user"
1999-04-16 03:35:26 +02:00
#test set verbose on
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set verbose on" "set verbose on"
1999-04-16 03:35:26 +02:00
#test show verbose on
gdb_test "show verbose" "Verbose printing of informational messages is on..*" "show verbose (on)"
#test set verbose off
2010-06-01 23:29:21 +02:00
gdb_test_no_output "set verbose off" "set verbose off"
1999-04-16 03:35:26 +02:00
#test show verbose off
gdb_test "show verbose" "Verbosity is off..*" "show verbose (off)"