gdb/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 11 Jan 2010 17:58:16 +0000 (17:58 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Mon, 11 Jan 2010 17:58:16 +0000 (17:58 +0000)
Implement binary numbers parsing.
* c-exp.y (parse_number): New case 'b' and 'B'.

gdb/testsuite/
Implement binary numbers parsing.
* gdb.base/printcmds.exp (test_integer_literals_accepted)
(test_integer_literals_rejected): New binary tests.

gdb/ChangeLog
gdb/c-exp.y
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/printcmds.exp

index 8a12029a02d513eccc0c6c10fa6624d7866dadfe..34dcb5dc7e35b59f5625419e754f9b0e48b4a18f 100644 (file)
@@ -1,3 +1,8 @@
+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>
 
index ba5fddcb33892d33c237b86d101debb478ae98fe..2ea5c6fbe306df3600b2f8879bc7448757549012 100644 (file)
@@ -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':
index 93cf035cf1d7784087ee2efae19441d62df9210b..fe1c4be0dcb7fc2a7cf96947876af8af5ee9e148 100644 (file)
@@ -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.
index 76265bb32a6d258a14a24d96f5f11a9c9c5e7050..74ea6ede30911c8a20c3114ee13201c13f6bcdb2 100644 (file)
@@ -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 {} {