Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(919)

Unified Diff: gdb/testsuite/gdb.base/printcmds.exp

Issue 124383005: GDB 7.6.50 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@upstream
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gdb/testsuite/gdb.base/printcmds.c ('k') | gdb/testsuite/gdb.base/prologue.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gdb/testsuite/gdb.base/printcmds.exp
diff --git a/gdb/testsuite/gdb.base/printcmds.exp b/gdb/testsuite/gdb.base/printcmds.exp
index 993162e350542a96e26055cbbe548915e67515b8..6d65107be1df8a8537489fa4f41dde7052125514 100644
--- a/gdb/testsuite/gdb.base/printcmds.exp
+++ b/gdb/testsuite/gdb.base/printcmds.exp
@@ -1,7 +1,6 @@
# This testcase is part of GDB, the GNU debugger.
-# Copyright 1992, 1994-1997, 1999-2000, 2002-2004, 2007-2012 Free
-# Software Foundation, Inc.
+# Copyright 1992-2013 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
@@ -21,9 +20,8 @@
# This file was written by Fred Fish. (fnf@cygnus.com)
-set testfile "printcmds"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
+standard_testfile .c
+
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
untested printcmds.exp
return -1
@@ -424,48 +422,48 @@ proc test_print_all_chars {} {
proc test_print_repeats_10 {} {
global gdb_prompt decimal
- for { set x 1; } { $x <= 16 } { incr x; } {
+ for { set x 1 } { $x <= 16 } { incr x } {
gdb_test_no_output "set print elements $x"
- for { set e 1; } { $e <= 16 } {incr e; } {
- set v [expr $e - 1];
+ for { set e 1 } { $e <= 16 } {incr e } {
+ set v [expr $e - 1]
set command "p &ctable2\[${v}*16\]"
if { $x < $e } {
- set aval $x;
+ set aval $x
} else {
- set aval $e;
+ set aval $e
}
- set xval [expr $x - $e];
+ set xval [expr $x - $e]
if { $xval < 0 } {
- set xval 0;
+ set xval 0
}
if { $aval > 10 } {
- set a "'a' <repeats $aval times>";
+ set a "'a' <repeats $aval times>"
if { $xval > 0 } {
- set a "${a}, \\\"";
+ set a "${a}, \\\""
}
} else {
- set a "\\\"[string range "aaaaaaaaaaaaaaaa" 1 $aval]";
+ set a "\\\"[string range "aaaaaaaaaaaaaaaa" 1 $aval]"
if { $xval > 10 } {
- set a "$a\\\", ";
+ set a "$a\\\", "
}
}
- set xstr "";
+ set xstr ""
if { $xval > 10 } {
- set xstr "'X' <repeats $xval times>";
+ set xstr "'X' <repeats $xval times>"
} else {
if { $xval > 0 } {
- set xstr "[string range "XXXXXXXXXXXXXXXX" 1 $xval]\\\"";
+ set xstr "[string range "XXXXXXXXXXXXXXXX" 1 $xval]\\\""
} else {
if { $aval <= 10 } {
- set xstr "\\\"";
+ set xstr "\\\""
}
}
}
if { $aval < 16 } {
set xstr "${xstr}\[.\]\[.\]\[.\]"
}
- set string " = \[(\]unsigned char \[*\]\[)\] <ctable2(\\+$decimal)?> ${a}${xstr}";
- gdb_test "$command" "$string" "$command with print elements set to $x";
+ set string " = \[(\]unsigned char \[*\]\[)\] <ctable2(\\+$decimal)?> ${a}${xstr}"
+ gdb_test "$command" "$string" "$command with print elements set to $x"
}
}
}
@@ -589,6 +587,16 @@ proc test_print_int_arrays {} {
" = {{{0, 1}, {2, 3}, {4, 5}}, {{6, 7}, {8, 9}, {10, 11}}}"
gdb_test_escape_braces "p int4dim" \
" = {{{{0, 1}, {2, 3}, {4, 5}}, {{6, 7}, {8, 9}, {10, 11}}}}"
+
+ # Some checks for various output formats.
+ gdb_test_escape_braces "p/x int4dim" \
+ " = {{{{0x0, 0x1}, {0x2, 0x3}, {0x4, 0x5}}, {{0x6, 0x7}, {0x8, 0x9}, {0xa, 0xb}}}}"
+ gdb_test_escape_braces "p/z int4dim" \
+ " = {{{{0x0+0, 0x0+1}, {0x0+2, 0x0+3}, {0x0+4, 0x0+5}}, {{0x0+6, 0x0+7}, {0x0+8, 0x0+9}, {0x0+a, 0x0+b}}}}"
+ gdb_test_escape_braces "p/o int4dim" \
+ " = {{{{0, 01}, {02, 03}, {04, 05}}, {{06, 07}, {010, 011}, {012, 013}}}}"
+ gdb_test_escape_braces "p/t int4dim" \
+ " = {{{{0, 1}, {10, 11}, {100, 101}}, {{110, 111}, {1000, 1001}, {1010, 1011}}}}"
}
proc test_print_typedef_arrays {} {
@@ -660,7 +668,7 @@ proc test_print_string_constants {} {
# We need to up this because this can be really slow on some boards.
# (Test may involve inferior malloc() calls).
- set timeout 60;
+ set timeout 60
gdb_test "p \"a string\"" " = \"a string\""
gdb_test "p \"embedded \\000 null\"" " = \"embedded \\\\000 null\""
@@ -684,7 +692,7 @@ proc test_print_array_constants {} {
# We need to up this because this can be really slow on some boards.
# (Test may involve inferior malloc() calls).
- set timeout 60;
+ set timeout 60
gdb_test "print {'a','b','c'}" " = \"abc\""
gdb_test_escape_braces "print {0,1,2}" " = {0, 1, 2}"
@@ -720,6 +728,24 @@ proc test_printf {} {
# Regression test for "%% at end of format string.
# See http://sourceware.org/bugzilla/show_bug.cgi?id=11345
gdb_test "printf \"%%%d%%\\n\", 5" "%5%"
+
+ # Some tests for missing format specifier after '%'.
+ gdb_test "printf \"%\", 0" "Incomplete format specifier at end of format string"
+ gdb_test "printf \"%.234\", 0" "Incomplete format specifier at end of format string"
+ gdb_test "printf \"%-\", 0" "Incomplete format specifier at end of format string"
+ gdb_test "printf \"%-23\", 0" "Incomplete format specifier at end of format string"
+
+ # Test for invalid printf flags on pointer types.
+ gdb_test "printf \"%#p\", 0" "Inappropriate modifiers to format specifier 'p' in printf"
+ gdb_test "printf \"% p\", 0" "Inappropriate modifiers to format specifier 'p' in printf"
+ gdb_test "printf \"%0p\", 0" "Inappropriate modifiers to format specifier 'p' in printf"
+ gdb_test "printf \"%+p\", 0" "Inappropriate modifiers to format specifier 'p' in printf"
+
+
+ gdb_test "define hibob\nprintf \"hi bob \"\nshell echo zzz\nprintf \"y\\n\"\nend" \
+ "" \
+ "create hibob command"
+ gdb_test "hibob" "hi bob zzz.*y" "run hibob command"
}
#Test printing DFP values with printf
@@ -771,6 +797,9 @@ proc test_printf_with_dfp {} {
# The largest exponent for 128-bit dfp value is 6144.
gdb_test "printf \"%DDf\\n\",1.2E6144dl" "1.200000000000000000000000000000000E\\+6144"
+
+ # GDB used to get this wrong.
+ gdb_test "printf \"%Hf %Hf\\n\",1.2df,1.3df" "1.2 1.3"
}
proc test_print_symbol {} {
@@ -792,6 +821,76 @@ proc gdb_test_escape_braces { args } {
gdb_test [lindex $args 0] $esc_pattern [lindex $args 2]
}
+proc test_repeat_bytes {} {
+ set start(E) {}
+ set start(S) {a}
+ set start(L) {abaabbaaabbb}
+ set start(R) {'a' <repeats 20 times>}
+ set end(E) {}
+ set end(S) {c}
+ set end(L) {cdccddcccddd}
+ set end(R) {'c' <repeats 20 times>}
+ set invalid(S) {\\240}
+ set invalid(L) {\\240\\240\\240\\240}
+ set invalid(R) {'\\240' <repeats 20 times>}
+
+ set fmt(SSS) "\"%s%s%s\""
+ set fmt(SSR) "\"%s%s\", %s"
+ set fmt(SRS) "\"%s\", %s, \"%s\""
+ set fmt(RSS) "%s, \"%s%s\""
+ set fmt(RSR) "%s, \"%s\", %s"
+ set fmt(SRR) "\"%s\", %s, %s"
+ set fmt(RRS) "%s, %s, \"%s\""
+ set fmt(RRR) "%s, %s, %s"
+
+ set fmt(RS) "%s, \"%s\""
+ set fmt(RR) "%s, %s"
+ set fmt(SR) "\"%s\", %s"
+ set fmt(SS) "\"%s%s\""
+
+ # Test the various permutations of invalid characters
+ foreach i [array names invalid] {
+ set I $i
+
+ if {$i == "L"} {
+ set i "S"
+ }
+
+ foreach s [array names start] {
+ set S $s
+
+ if {$s == "L"} {
+ set s "S"
+ }
+
+
+ foreach e [array names end] {
+ set E $e
+
+ if {$e == "L"} {
+ set e "S"
+ }
+
+ # Skip E*E.
+ if {$s == "E" && $e == "E"} { continue }
+
+ # Special cases...
+ if {$s == "E"} {
+ set result [format $fmt($i$e) $invalid($I) $end($E)]
+ } elseif {$e == "E"} {
+ set result [format $fmt($s$i) $start($S) $invalid($I)]
+ } else {
+ set result [format $fmt($s$i$e) \
+ $start($S) $invalid($I) $end($E)]
+ }
+
+ send_log "expecting: = $result\n"
+ gdb_test "print invalid_$S$I$E" "= $result"
+ }
+ }
+ }
+}
+
# Start with a fresh gdb.
gdb_exit
@@ -851,3 +950,4 @@ test_print_enums
test_printf
test_printf_with_dfp
test_print_symbol
+test_repeat_bytes
« no previous file with comments | « gdb/testsuite/gdb.base/printcmds.c ('k') | gdb/testsuite/gdb.base/prologue.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698