PR gdb/10884
* value.c (value_primitive_field): Call check_typedef on the type.
This commit is contained in:
parent
dd0cd0d0e0
commit
9e19b45e2e
5 changed files with 53 additions and 0 deletions
|
@ -1,3 +1,10 @@
|
|||
2009-12-21 Vladimir Prus <vladimir@codesourcery.com>
|
||||
|
||||
PR gdb/10884
|
||||
|
||||
* value.c (value_primitive_field): Call check_typedef
|
||||
on the type.
|
||||
|
||||
2009-12-21 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* COPYING: Update to GPL version 3.
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2009-12-21 Vladimir Prus <vladimir@codesourcery.com>
|
||||
|
||||
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 <brobecker@adacore.com>
|
||||
|
||||
* Makefile.in gdb.ada/gnat_ada.gpr, gdb.base/gcore-buffer-overflow.c,
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -1873,6 +1873,7 @@ value_primitive_field (struct value *arg1, int offset,
|
|||
|
||||
CHECK_TYPEDEF (arg_type);
|
||||
type = TYPE_FIELD_TYPE (arg_type, fieldno);
|
||||
type = check_typedef (type);
|
||||
|
||||
/* Handle packed fields */
|
||||
|
||||
|
|
Loading…
Reference in a new issue