From: Joel Brobecker Date: Mon, 21 Dec 2009 13:21:43 +0000 (+0000) Subject: PR gdb/10884 X-Git-Tag: gdb_7_0_1-2009-12-22-release~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f8244fdb7f33df69ce58b3a33f30b23d6d97ebe0;p=thirdparty%2Fbinutils-gdb.git PR gdb/10884 * gdb.mi/var-cmd.c (do_bitfield_tests): New (main): Call do_bitfield_tests. * gdb.mi/mi-var-cmd.exp: Run the 'bitfield' testcase. --- diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 176e683d734..3dd23742acf 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -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-var-cmd.exp: Run the 'bitfield' testcase. + 2009-12-21 Jan Kratochvil * gdb.base/foll-fork.exp (unpatch child, breakpoint at exit call): diff --git a/gdb/testsuite/gdb.mi/mi-var-cmd.exp b/gdb/testsuite/gdb.mi/mi-var-cmd.exp index 6efb3332d10..4cb2552f7f4 100644 --- a/gdb/testsuite/gdb.mi/mi-var-cmd.exp +++ b/gdb/testsuite/gdb.mi/mi-var-cmd.exp @@ -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. diff --git a/gdb/testsuite/gdb.mi/var-cmd.c b/gdb/testsuite/gdb.mi/var-cmd.c index 6372f64b5de..bbadc24ba7a 100644 --- a/gdb/testsuite/gdb.mi/var-cmd.c +++ b/gdb/testsuite/gdb.mi/var-cmd.c @@ -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); }