aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.base
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/gdb.base')
-rw-r--r--gdb/testsuite/gdb.base/printcmds.c13
-rw-r--r--gdb/testsuite/gdb.base/printcmds.exp28
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