diff options
author | Tom Tromey <tromey@redhat.com> | 2011-07-05 13:36:42 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2011-07-05 13:36:42 +0000 |
commit | eb2a6f420b324bc81207c7606ebef9db3a9bb984 (patch) | |
tree | 5741460f7d99914793d65d5ef485030ce74da60e | |
parent | 177b42fefa0b72f2ca50ddf7393c0f2465546ff4 (diff) | |
download | gdb-eb2a6f420b324bc81207c7606ebef9db3a9bb984.zip gdb-eb2a6f420b324bc81207c7606ebef9db3a9bb984.tar.gz gdb-eb2a6f420b324bc81207c7606ebef9db3a9bb984.tar.bz2 |
gdb
* gnu-v3-abi.c (gnuv3_rtti_type): Check TYPE_CPLUS_REALLY_JAVA.
* gdbtypes.h (struct cplus_struct_type) <is_java>: New field.
(TYPE_CPLUS_REALLY_JAVA): New macro.
* dwarf2read.c (process_structure_scope): Set
TYPE_CPLUS_REALLY_JAVA.
gdb/testsuite
* gdb.java/jprint.java (jprint.hi): New field.
* gdb.java/jprint.exp: Print string.
-rw-r--r-- | gdb/ChangeLog | 8 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 3 | ||||
-rw-r--r-- | gdb/gdbtypes.h | 4 | ||||
-rw-r--r-- | gdb/gnu-v3-abi.c | 4 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.java/jprint.exp | 2 | ||||
-rw-r--r-- | gdb/testsuite/gdb.java/jprint.java | 3 |
7 files changed, 28 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d85938c..9ea7947 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2011-07-05 Tom Tromey <tromey@redhat.com> + + * gnu-v3-abi.c (gnuv3_rtti_type): Check TYPE_CPLUS_REALLY_JAVA. + * gdbtypes.h (struct cplus_struct_type) <is_java>: New field. + (TYPE_CPLUS_REALLY_JAVA): New macro. + * dwarf2read.c (process_structure_scope): Set + TYPE_CPLUS_REALLY_JAVA. + 2011-07-05 Thiago Jung Bauermann <bauerman.ibm.com> * ada-lang.c: Fix typos. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 3ffe1ee..d86487a 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -7492,6 +7492,9 @@ process_structure_scope (struct die_info *die, struct dwarf2_cu *cu) } do_cleanups (back_to); + + if (HAVE_CPLUS_STRUCT (type)) + TYPE_CPLUS_REALLY_JAVA (type) = cu->language == language_java; } quirk_gcc_member_function_pointer (type, cu->objfile); diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h index 3b62453..1e96293 100644 --- a/gdb/gdbtypes.h +++ b/gdb/gdbtypes.h @@ -705,6 +705,9 @@ struct cplus_struct_type dynamic. Zero if not yet computed. */ int is_dynamic : 2; + /* Non-zero if this type came from a Java CU. */ + unsigned int is_java : 1; + /* For derived classes, the number of base classes is given by n_baseclasses and virtual_field_bits is a bit vector containing one bit per base class. If the base class is virtual, the @@ -991,6 +994,7 @@ extern void allocate_gnat_aux_type (struct type *); #define BASETYPE_VIA_PUBLIC(thistype, index) \ ((!TYPE_FIELD_PRIVATE(thistype, index)) && (!TYPE_FIELD_PROTECTED(thistype, index))) #define TYPE_CPLUS_DYNAMIC(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_dynamic +#define TYPE_CPLUS_REALLY_JAVA(thistype) TYPE_CPLUS_SPECIFIC (thistype)->is_java #define BASETYPE_VIA_VIRTUAL(thistype, index) \ (TYPE_CPLUS_SPECIFIC(thistype)->virtual_field_bits == NULL ? 0 \ diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index 25a437b..6c6f92c 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -287,6 +287,10 @@ gnuv3_rtti_type (struct value *value, if (TYPE_CODE (values_type) != TYPE_CODE_CLASS) return NULL; + /* Java doesn't have RTTI following the C++ ABI. */ + if (TYPE_CPLUS_REALLY_JAVA (values_type)) + return NULL; + /* Determine architecture. */ gdbarch = get_type_arch (values_type); diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 346f427..22b6a98 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-07-05 Tom Tromey <tromey@redhat.com> + + * gdb.java/jprint.java (jprint.hi): New field. + * gdb.java/jprint.exp: Print string. + 2011-07-05 Thiago Jung Bauermann <bauerman.ibm.com> * gdb.base/call-sc.c: Fix typos. diff --git a/gdb/testsuite/gdb.java/jprint.exp b/gdb/testsuite/gdb.java/jprint.exp index 682715a..81d8ad1 100644 --- a/gdb/testsuite/gdb.java/jprint.exp +++ b/gdb/testsuite/gdb.java/jprint.exp @@ -70,4 +70,6 @@ if [set_lang_java] then { # so GDB will report these as "optimized out". See gcc/43260. setup_xfail *-*-* gcc/43260 gdb_test "print *jprint.props" " = .*" "print a java.util.Properties" + + gdb_test "print jprint.hi" "= java.lang.String \"hi maude\"" "print a java.lang.String" } diff --git a/gdb/testsuite/gdb.java/jprint.java b/gdb/testsuite/gdb.java/jprint.java index 01ebdbc..b4385ab 100644 --- a/gdb/testsuite/gdb.java/jprint.java +++ b/gdb/testsuite/gdb.java/jprint.java @@ -1,6 +1,6 @@ // jprint.java test program. // -// Copyright 2004, 2010 +// Copyright 2004, 2010, 2011 // Free Software Foundation, Inc. // // Written by Jeff Johnston <jjohnstn@redhat.com> @@ -42,6 +42,7 @@ class jvclass { public class jprint extends jvclass { public static Properties props = new Properties (); + public static String hi = "hi maude"; public int dothat (int x) { int y = x + 3; |