diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/c-exp.y | 10 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/printcmds.exp | 15 |
4 files changed, 35 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 8a12029..34dcb5d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,4 +1,9 @@ 2010-01-11 Jan Kratochvil <jan.kratochvil@redhat.com> + + Implement binary numbers parsing. + * c-exp.y (parse_number): New case 'b' and 'B'. + +2010-01-11 Jan Kratochvil <jan.kratochvil@redhat.com> Tristan Gingold <gingold@adacore.com> * solib.c (info_sharedlibrary_command): Replace diff --git a/gdb/c-exp.y b/gdb/c-exp.y index ba5fddc..2ea5c6f 100644 --- a/gdb/c-exp.y +++ b/gdb/c-exp.y @@ -1411,6 +1411,16 @@ parse_number (char *p, int len, int parsed_float, YYSTYPE *putithere) } break; + case 'b': + case 'B': + if (len >= 3) + { + p += 2; + base = 2; + len -= 2; + } + break; + case 't': case 'T': case 'd': diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 93cf035..fe1c4be 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2010-01-11 Jan Kratochvil <jan.kratochvil@redhat.com> + + Implement binary numbers parsing. + * gdb.base/printcmds.exp (test_integer_literals_accepted) + (test_integer_literals_rejected): New binary tests. + 2010-01-09 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> * gdb.cell/configure: Regenerate. diff --git a/gdb/testsuite/gdb.base/printcmds.exp b/gdb/testsuite/gdb.base/printcmds.exp index 76265bb..74ea6ed 100644 --- a/gdb/testsuite/gdb.base/printcmds.exp +++ b/gdb/testsuite/gdb.base/printcmds.exp @@ -78,6 +78,13 @@ proc test_integer_literals_accepted {} { gdb_test "p 0xabcdef" " = 11259375" gdb_test "p 0xAbCdEf" " = 11259375" gdb_test "p/x 0x123" " = 0x123" + + # Test various binary values. + + gdb_test "p 0b0" " = 0" + gdb_test "p 0b1111" " = 15" + gdb_test "p 0B1111" " = 15" + gdb_test "p -0b1111" " = -15" } proc test_character_literals_accepted {} { @@ -99,7 +106,8 @@ proc test_character_literals_accepted {} { proc test_integer_literals_rejected {} { global gdb_prompt - test_print_reject "p 0x" + test_print_reject "p 0x" + test_print_reject "p 0b" gdb_test "p ''" "(Empty character constant\\.|A character constant must contain at least one character\\.)" gdb_test "p '''" "(Empty character constant\\.|A character constant must contain at least one character\\.)" test_print_reject "p '\\'" @@ -131,6 +139,11 @@ proc test_integer_literals_rejected {} { test_print_reject "p 0xG" test_print_reject "p 0xAG" + + # Test various binary values. + + test_print_reject "p 0b2" + test_print_reject "p 0b12" } proc test_print_all_chars {} { |