PR gdb/10884
* value.c (value_primitive_field): Call check_typedef on the type.
This commit is contained in:
parent
dd0cd0d0e0
commit
9e19b45e2e
|
@ -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>
|
2009-12-21 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
* COPYING: Update to GPL version 3.
|
* 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>
|
2009-12-20 Joel Brobecker <brobecker@adacore.com>
|
||||||
|
|
||||||
* Makefile.in gdb.ada/gnat_ada.gpr, gdb.base/gcore-buffer-overflow.c,
|
* 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_prepare_inline_tests $srcfile
|
||||||
mi_run_inline_test frozen
|
mi_run_inline_test frozen
|
||||||
|
|
||||||
|
mi_run_inline_test bitfield
|
||||||
|
|
||||||
# Since the inline test framework does not really work with
|
# Since the inline test framework does not really work with
|
||||||
# function calls, first to inline tests and then do the reminder
|
# function calls, first to inline tests and then do the reminder
|
||||||
# manually.
|
# manually.
|
||||||
|
|
|
@ -468,6 +468,40 @@ void do_at_tests ()
|
||||||
/*: END: floating :*/
|
/*: 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
|
int
|
||||||
main (int argc, char *argv [])
|
main (int argc, char *argv [])
|
||||||
{
|
{
|
||||||
|
@ -477,6 +511,7 @@ main (int argc, char *argv [])
|
||||||
do_special_tests ();
|
do_special_tests ();
|
||||||
do_frozen_tests ();
|
do_frozen_tests ();
|
||||||
do_at_tests ();
|
do_at_tests ();
|
||||||
|
do_bitfield_tests ();
|
||||||
exit (0);
|
exit (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1873,6 +1873,7 @@ value_primitive_field (struct value *arg1, int offset,
|
||||||
|
|
||||||
CHECK_TYPEDEF (arg_type);
|
CHECK_TYPEDEF (arg_type);
|
||||||
type = TYPE_FIELD_TYPE (arg_type, fieldno);
|
type = TYPE_FIELD_TYPE (arg_type, fieldno);
|
||||||
|
type = check_typedef (type);
|
||||||
|
|
||||||
/* Handle packed fields */
|
/* Handle packed fields */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue