From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31113 invoked by alias); 21 Dec 2009 09:51:15 -0000 Received: (qmail 31105 invoked by uid 22791); 21 Dec 2009 09:51:14 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 21 Dec 2009 09:51:08 +0000 Received: (qmail 815 invoked from network); 21 Dec 2009 09:51:04 -0000 Received: from unknown (HELO wind.localnet) (vladimir@127.0.0.2) by mail.codesourcery.com with ESMTPA; 21 Dec 2009 09:51:04 -0000 From: Vladimir Prus To: Daniel Jacobowitz Subject: Re: RFA: unbreak typedefed bitfield Date: Mon, 21 Dec 2009 09:51:00 -0000 User-Agent: KMail/1.12.2 (Linux/2.6.31-14-generic-pae; KDE/4.3.2; i686; ; ) Cc: Joel Brobecker , gdb-patches@sourceware.org References: <200912181541.30891.vladimir@codesourcery.com> <200912181720.19470.vladimir@codesourcery.com> <20091218142407.GA18808@caradoc.them.org> In-Reply-To: <20091218142407.GA18808@caradoc.them.org> MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="Boundary-00=_GU0LLRf4YLYQb3+" Message-Id: <200912211251.02535.vladimir@codesourcery.com> 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: 2009-12/txt/msg00295.txt.bz2 --Boundary-00=_GU0LLRf4YLYQb3+ Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-length: 342 On Friday 18 December 2009 17:24:07 Daniel Jacobowitz wrote: > On Fri, Dec 18, 2009 at 05:20:19PM +0300, Vladimir Prus wrote: > > I can surely use > >=20 > > type =3D check_typedef (type); > >=20 > > if that seems less confusing. >=20 > Yes, please. That version's fine. Here's what I've checked in =E2=80=94 with tests added. - Volodya --Boundary-00=_GU0LLRf4YLYQb3+ Content-Type: text/x-patch; charset="UTF-8"; name="10884-final.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="10884-final.diff" Content-length: 3947 Index: gdb/ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/ChangeLog,v retrieving revision 1.11157 diff -u -p -r1.11157 ChangeLog --- gdb/ChangeLog 21 Dec 2009 07:40:04 -0000 1.11157 +++ gdb/ChangeLog 21 Dec 2009 09:49:47 -0000 @@ -1,3 +1,10 @@ +2009-12-21 Vladimir Prus + + PR gdb/10884 + + * value.c (value_primitive_field): Call check_typedef + on the type. + 2009-12-21 Joel Brobecker * COPYING: Update to GPL version 3. Index: gdb/value.c =================================================================== RCS file: /cvs/src/src/gdb/value.c,v retrieving revision 1.96 diff -u -p -r1.96 value.c --- gdb/value.c 31 Aug 2009 20:18:45 -0000 1.96 +++ gdb/value.c 21 Dec 2009 09:49:47 -0000 @@ -1873,6 +1873,7 @@ value_primitive_field (struct value *arg CHECK_TYPEDEF (arg_type); type = TYPE_FIELD_TYPE (arg_type, fieldno); + type = check_typedef (type); /* Handle packed fields */ Index: gdb/testsuite/ChangeLog =================================================================== RCS file: /cvs/src/src/gdb/testsuite/ChangeLog,v retrieving revision 1.2049 diff -u -p -r1.2049 ChangeLog --- gdb/testsuite/ChangeLog 20 Dec 2009 11:55:24 -0000 1.2049 +++ gdb/testsuite/ChangeLog 21 Dec 2009 09:49:48 -0000 @@ -1,3 +1,11 @@ +2009-12-21 Vladimir Prus + + PR gdb/10884 + + * gdb.mi/var-cmd.c (do_bitfield_tests): New + (main): Call do_bitfield_tests. + * gdb.mi/mi-cmd-var.exp: Run the 'bitfield' testcase. + 2009-12-20 Joel Brobecker * Makefile.in gdb.ada/gnat_ada.gpr, gdb.base/gcore-buffer-overflow.c, Index: gdb/testsuite/gdb.mi/mi-var-cmd.exp =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-var-cmd.exp,v retrieving revision 1.45 diff -u -p -r1.45 mi-var-cmd.exp --- gdb/testsuite/gdb.mi/mi-var-cmd.exp 15 Sep 2009 18:51:25 -0000 1.45 +++ gdb/testsuite/gdb.mi/mi-var-cmd.exp 21 Dec 2009 09:49:48 -0000 @@ -577,6 +577,8 @@ proc set_frozen {varobjs flag} { mi_prepare_inline_tests $srcfile mi_run_inline_test frozen +mi_run_inline_test bitfield + # Since the inline test framework does not really work with # function calls, first to inline tests and then do the reminder # manually. Index: gdb/testsuite/gdb.mi/var-cmd.c =================================================================== RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/var-cmd.c,v retrieving revision 1.19 diff -u -p -r1.19 var-cmd.c --- gdb/testsuite/gdb.mi/var-cmd.c 3 Jan 2009 05:58:06 -0000 1.19 +++ gdb/testsuite/gdb.mi/var-cmd.c 21 Dec 2009 09:49:48 -0000 @@ -468,6 +468,40 @@ void do_at_tests () /*: END: floating :*/ } +/* Some header appear to define uint already, so apply some + uglification. Note that without uglification, the compile + does not fail, rather, we don't test what we want because + something else calls check_typedef on 'uint' already. */ +typedef unsigned int uint_for_mi_testing; + +struct Data { + int alloc; + uint_for_mi_testing sharable : 4; +}; + +/* Accessing a value of a bitfield whose type is a typed used to + result in division by zero. See: + + http://sourceware.org/bugzilla/show_bug.cgi?id=10884 + + This tests for this bug. */ + +void do_bitfield_tests () +{ + /*: BEGIN: bitfield :*/ + struct Data d = {0, 3}; + /*: + mi_create_varobj V d "create varobj for Data" + mi_list_varobj_children "V" { + {"V.alloc" "alloc" "0" "int"} + {"V.sharable" "sharable" "0" "unsigned int"} + } "list children of Data" + mi_check_varobj_value V.sharable 3 "access bitfield" + :*/ + return; + /*: END: bitfield :*/ +} + int main (int argc, char *argv []) { @@ -477,6 +511,7 @@ main (int argc, char *argv []) do_special_tests (); do_frozen_tests (); do_at_tests (); + do_bitfield_tests (); exit (0); } --Boundary-00=_GU0LLRf4YLYQb3+--