diff options
Diffstat (limited to 'gdb/testsuite/gdb.base')
-rw-r--r-- | gdb/testsuite/gdb.base/printcmds.c | 13 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/printcmds.exp | 28 |
2 files changed, 40 insertions, 1 deletions
diff --git a/gdb/testsuite/gdb.base/printcmds.c b/gdb/testsuite/gdb.base/printcmds.c index 78291a2..fa3a62d 100644 --- a/gdb/testsuite/gdb.base/printcmds.c +++ b/gdb/testsuite/gdb.base/printcmds.c @@ -108,6 +108,7 @@ enum flag_enum FE_TWO_LEGACY = 0x02, }; +enum flag_enum one = FE_ONE; enum flag_enum three = (enum flag_enum) (FE_ONE | FE_TWO); /* Another enum considered as a "flag enum", but with no enumerator with value @@ -152,6 +153,18 @@ struct some_struct } }; +/* This is used in the printf test. */ +struct small_struct +{ + int a; + int b; + int c; +} a_small_struct = { + 1, + 2, + 3 +}; + /* The following variables are used for testing byte repeat sequences. The variable names are encoded: invalid_XYZ where: X = start diff --git a/gdb/testsuite/gdb.base/printcmds.exp b/gdb/testsuite/gdb.base/printcmds.exp index 2506f74..73f145c 100644 --- a/gdb/testsuite/gdb.base/printcmds.exp +++ b/gdb/testsuite/gdb.base/printcmds.exp @@ -981,6 +981,32 @@ proc test_printf_with_strings {} { } } +# Test the printf '%V' format. +proc test_printf_V_format {} { + # Enums. + gdb_test {printf "%V\n", one} "FE_ONE" + gdb_test {printf "%V\n", three} "\\(FE_ONE \\| FE_TWO\\)" + gdb_test {printf "%V\n", flag_enum_without_zero} "0" + gdb_test {printf "%V\n", three_not_flag} "3" + + # Arrays. + gdb_test {printf "%V\n", a1} "\\{2, 4, 6, 8, 10, 12, 14, 16, 18, 20\\}" + gdb_test {printf "%V[]\n", a1} "\\{2, 4, 6, 8, 10, 12, 14, 16, 18, 20\\}" + gdb_test {printf "%V[][]\n", a1} \ + "\\{2, 4, 6, 8, 10, 12, 14, 16, 18, 20\\}\\\[\\\]" + gdb_test {printf "%V[-elements 3]\n", a1} "\\{2, 4, 6\\.\\.\\.\\}" + gdb_test {printf "%V[-elements 3][]\n", a1} \ + "\\{2, 4, 6\\.\\.\\.\\}\\\[\\\]" + gdb_test {printf "%V[-elements 3 -array-indexes on]\n", a1} \ + "\\{\\\[0\\\] = 2, \\\[1\\\] = 4, \\\[2\\\] = 6\\.\\.\\.\\}" + + # Structures. + gdb_test {printf "%V\n", a_small_struct} \ + "\\{a = 1, b = 2, c = 3\\}" + gdb_test {printf "%V[-pretty on]\n", a_small_struct} \ + "\\{\r\n a = 1,\r\n b = 2,\r\n c = 3\r\n\\}" +} + proc test_print_symbol {} { gdb_test_no_output "set print symbol on" @@ -1127,7 +1153,6 @@ proc test_printf_convenience_var {prefix} { } } - clean_restart gdb_test "print \$pc" "No registers\\." @@ -1213,6 +1238,7 @@ test_print_enums test_printf test_printf_with_dfp test_printf_with_strings +test_printf_V_format test_print_symbol test_repeat_bytes test_radices |