diff options
author | Tom Tromey <tromey@redhat.com> | 2012-05-21 19:47:54 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2012-05-21 19:47:54 +0000 |
commit | b1af9e975066c48b043c5234199effd47115b4d4 (patch) | |
tree | 3a6e58a8b29679f4e34eecc734405b6f5420cde1 /gdb/gnu-v3-abi.c | |
parent | 248537e34b516ddcd9489f76441d81139ca7e2f7 (diff) | |
download | gdb-b1af9e975066c48b043c5234199effd47115b4d4.zip gdb-b1af9e975066c48b043c5234199effd47115b4d4.tar.gz gdb-b1af9e975066c48b043c5234199effd47115b4d4.tar.bz2 |
PR c++/7173:
* gnu-v3-abi.c (gnuv3_baseclass_offset): Return early for Java
types.
* value.h (value_cast_pointers): Update.
* valops.c (value_cast_pointers): Add 'subclass_check' argument.
(value_cast): Update.
(update_search_result): New function.
(do_search_struct_field): New, from search_struct_field. Check
for ambiguous results.
(search_struct_field): Rewrite.
* infcall.c (value_arg_coerce): Update.
* eval.c (evaluate_subexp_standard) <STRUCTOP_MEMBER>: Use
value_cast_pointers.
* ada-lang.c (ada_convert_actual): Update.
testsuite
* gdb.cp/inherit.exp (test_print_mi_members): Expect errors.
Remove kfails.
(test_print_mi_member_types): Likewise.
Diffstat (limited to 'gdb/gnu-v3-abi.c')
-rw-r--r-- | gdb/gnu-v3-abi.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index 42b939d..3a83e2d 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -430,8 +430,9 @@ gnuv3_baseclass_offset (struct type *type, int index, ptr_type = builtin_type (gdbarch)->builtin_data_ptr; /* If it isn't a virtual base, this is easy. The offset is in the - type definition. */ - if (!BASETYPE_VIA_VIRTUAL (type, index)) + type definition. Likewise for Java, which doesn't really have + virtual inheritance in the C++ sense. */ + if (!BASETYPE_VIA_VIRTUAL (type, index) || TYPE_CPLUS_REALLY_JAVA (type)) return TYPE_BASECLASS_BITPOS (type, index) / 8; /* To access a virtual base, we need to use the vbase offset stored in |