From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 914 invoked by alias); 11 Jan 2010 14:38:09 -0000 Received: (qmail 900 invoked by uid 22791); 11 Jan 2010 14:38:09 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 11 Jan 2010 14:38:03 +0000 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o0BEc17o032744 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 11 Jan 2010 09:38:02 -0500 Received: from host0.dyn.jankratochvil.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o0BEbsKT021604 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 11 Jan 2010 09:38:01 -0500 Received: from host0.dyn.jankratochvil.net (localhost [127.0.0.1]) by host0.dyn.jankratochvil.net (8.14.3/8.14.3) with ESMTP id o0BEbr7V007491 for ; Mon, 11 Jan 2010 15:37:53 +0100 Received: (from jkratoch@localhost) by host0.dyn.jankratochvil.net (8.14.3/8.14.3/Submit) id o0BEbnnO007487 for gdb-patches@sourceware.org; Mon, 11 Jan 2010 15:37:49 +0100 Date: Mon, 11 Jan 2010 14:38:00 -0000 From: Jan Kratochvil To: gdb-patches@sourceware.org Subject: [patch] Support binary (0b...) numbers Message-ID: <20100111143749.GA7420@host0.dyn.jankratochvil.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-08-17) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-01/txt/msg00245.txt.bz2 Hi, it is completely offtopic from my other work but I got now surprised GDB cannot parse standard C syntax of binary (0b11 == 3) numbers. No regressions on {x86_64,x86_64-m32,i686}-fedora12-linux-gnu. Thanks, Jan gdb/ 2010-01-11 Jan Kratochvil Implement binary numbers parsing. * c-exp.y (parse_number): New case 'b' and 'B'. gdb/testsuite/ 2010-01-11 Jan Kratochvil Implement binary numbers parsing. * gdb.base/printcmds.exp (test_integer_literals_accepted) (test_integer_literals_rejected): New binary tests. --- 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': --- 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 {} {