X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdb%2Fjv-lang.c;h=421e665b309c695e5e14bf5d87c42be256474941;hb=711833262c7a413b10a32f01153454bc5a53a5a6;hp=e6fcaee2626c1e18ed9de9e1505d0890a77c58f9;hpb=74ccd7f58b78303b1de7c7823d39821119592c20;p=platform%2Fupstream%2Fbinutils.git diff --git a/gdb/jv-lang.c b/gdb/jv-lang.c index e6fcaee..421e665 100644 --- a/gdb/jv-lang.c +++ b/gdb/jv-lang.c @@ -1,7 +1,6 @@ /* Java language support routines for GDB, the GNU debugger. - Copyright (C) 1997-2000, 2003-2005, 2007-2012 Free Software - Foundation, Inc. + Copyright (C) 1997-2014 Free Software Foundation, Inc. This file is part of GDB. @@ -24,29 +23,27 @@ #include "expression.h" #include "parser-defs.h" #include "language.h" -#include "gdbtypes.h" -#include "symtab.h" #include "symfile.h" #include "objfiles.h" -#include "gdb_string.h" #include "value.h" #include "c-lang.h" #include "jv-lang.h" +#include "varobj.h" #include "gdbcore.h" #include "block.h" #include "demangle.h" #include "dictionary.h" #include -#include "gdb_assert.h" #include "charset.h" #include "valprint.h" +#include "cp-support.h" /* Local functions */ extern void _initialize_java_language (void); -static int java_demangled_signature_length (char *); -static void java_demangled_signature_copy (char *, char *); +static int java_demangled_signature_length (const char *); +static void java_demangled_signature_copy (char *, const char *); static struct symtab *get_java_class_symtab (struct gdbarch *gdbarch); static char *get_java_utf8_name (struct obstack *obstack, struct value *name); @@ -118,8 +115,9 @@ get_dynamics_objfile (struct gdbarch *gdbarch) /* Mark it as shared so that it is cleared when the inferior is re-run. */ - dynamics_objfile = allocate_objfile (NULL, OBJF_SHARED); - dynamics_objfile->gdbarch = gdbarch; + dynamics_objfile = allocate_objfile (NULL, NULL, + OBJF_SHARED | OBJF_NOT_FILENAME); + dynamics_objfile->per_bfd->gdbarch = gdbarch; data = XCNEW (struct jv_per_objfile_data); set_objfile_data (dynamics_objfile, jv_dynamics_objfile_data_key, data); @@ -158,8 +156,9 @@ get_java_class_symtab (struct gdbarch *gdbarch) BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK) = bl; /* Allocate GLOBAL_BLOCK. */ - bl = allocate_block (&objfile->objfile_obstack); + bl = allocate_global_block (&objfile->objfile_obstack); BLOCK_DICT (bl) = dict_create_hashed_expandable (); + set_block_symtab (bl, class_symtab); BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK) = bl; /* Arrange to free the dict. */ @@ -174,7 +173,7 @@ add_class_symtab_symbol (struct symbol *sym) { struct symtab *symtab = get_java_class_symtab (get_objfile_arch (SYMBOL_SYMTAB (sym)->objfile)); - struct blockvector *bv = BLOCKVECTOR (symtab); + const struct blockvector *bv = BLOCKVECTOR (symtab); dict_add_symbol (BLOCK_DICT (BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK)), sym); } @@ -185,12 +184,10 @@ add_class_symbol (struct type *type, CORE_ADDR addr) struct symbol *sym; struct objfile *objfile = get_dynamics_objfile (get_type_arch (type)); - sym = (struct symbol *) - obstack_alloc (&objfile->objfile_obstack, sizeof (struct symbol)); - memset (sym, 0, sizeof (struct symbol)); - SYMBOL_SET_LANGUAGE (sym, language_java); + sym = allocate_symbol (objfile); + SYMBOL_SET_LANGUAGE (sym, language_java, &objfile->objfile_obstack); SYMBOL_SET_LINKAGE_NAME (sym, TYPE_TAG_NAME (type)); - SYMBOL_CLASS (sym) = LOC_TYPEDEF; + SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF; /* SYMBOL_VALUE (sym) = valu; */ SYMBOL_TYPE (sym) = type; SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN; @@ -269,7 +266,6 @@ type_from_class (struct gdbarch *gdbarch, struct value *clas) struct value *utf8_name; char *nptr; CORE_ADDR addr; - int is_array = 0; type = check_typedef (value_type (clas)); if (TYPE_CODE (type) == TYPE_CODE_PTR) @@ -318,7 +314,6 @@ type_from_class (struct gdbarch *gdbarch, struct value *clas) name = obstack_alloc (&objfile->objfile_obstack, namelen + 1); java_demangled_signature_copy (name, signature); name[namelen] = '\0'; - is_array = 1; temp = clas; /* Set array element type. */ temp = value_struct_elt (&temp, NULL, "methods", NULL, "structure"); @@ -341,8 +336,8 @@ java_link_class_type (struct gdbarch *gdbarch, struct type *type, struct value *clas) { struct value *temp; - char *unqualified_name; - char *name = TYPE_TAG_NAME (type); + const char *unqualified_name; + const char *name = TYPE_TAG_NAME (type); int ninterfaces, nfields, nmethods; int type_is_object = 0; struct fn_field *fn_fields; @@ -480,7 +475,7 @@ java_link_class_type (struct gdbarch *gdbarch, if (accflags & 0x0008) /* ACC_STATIC */ SET_FIELD_PHYSADDR (TYPE_FIELD (type, i), boffset); else - TYPE_FIELD_BITPOS (type, i) = 8 * boffset; + SET_FIELD_BITPOS (TYPE_FIELD (type, i), 8 * boffset); if (accflags & 0x8000) /* FIELD_UNRESOLVED_FLAG */ { TYPE_FIELD_TYPE (type, i) = get_java_object_type (); /* FIXME */ @@ -511,7 +506,7 @@ java_link_class_type (struct gdbarch *gdbarch, methods = NULL; for (i = 0; i < nmethods; i++) { - char *mname; + const char *mname; int k; if (methods == NULL) @@ -617,7 +612,7 @@ is_object_type (struct type *type) if (TYPE_CODE (type) == TYPE_CODE_PTR) { struct type *ttype = check_typedef (TYPE_TARGET_TYPE (type)); - char *name; + const char *name; if (TYPE_CODE (ttype) != TYPE_CODE_STRUCT) return 0; while (TYPE_N_BASECLASSES (ttype) > 0) @@ -667,7 +662,7 @@ java_primitive_type (struct gdbarch *gdbarch, int signature) struct type * java_primitive_type_from_name (struct gdbarch *gdbarch, - char *name, int namelen) + const char *name, int namelen) { const struct builtin_java_type *builtin = builtin_java_type (gdbarch); @@ -742,7 +737,7 @@ java_primitive_type_name (int signature) signature string SIGNATURE. */ static int -java_demangled_signature_length (char *signature) +java_demangled_signature_length (const char *signature) { int array = 0; @@ -762,7 +757,7 @@ java_demangled_signature_length (char *signature) RESULT. */ static void -java_demangled_signature_copy (char *result, char *signature) +java_demangled_signature_copy (char *result, const char *signature) { int array = 0; char *ptr; @@ -805,7 +800,7 @@ java_demangled_signature_copy (char *result, char *signature) as a freshly allocated copy. */ char * -java_demangle_type_signature (char *signature) +java_demangle_type_signature (const char *signature) { int length = java_demangled_signature_length (signature); char *result = xmalloc (length + 1); @@ -905,7 +900,7 @@ evaluate_subexp_java (struct type *expect_type, struct expression *exp, { int pc = *pos; int i; - char *name; + const char *name; enum exp_opcode op = exp->elts[*pos].opcode; struct value *arg1; struct value *arg2; @@ -1014,7 +1009,7 @@ nosideret: static char *java_demangle (const char *mangled, int options) { - return cplus_demangle (mangled, options | DMGL_JAVA); + return gdb_demangle (mangled, options | DMGL_JAVA); } /* Find the member function name of the demangled name NAME. NAME @@ -1164,9 +1159,9 @@ const struct exp_descriptor exp_descriptor_java = const struct language_defn java_language_defn = { "java", /* Language name */ + "Java", language_java, range_check_off, - type_check_off, case_sensitive_on, array_row_major, macro_expansion_no, @@ -1181,6 +1176,7 @@ const struct language_defn java_language_defn = default_print_typedef, /* Print a typedef using appropriate syntax */ java_val_print, /* Print a value using appropriate syntax */ java_value_print, /* Print a top-level value */ + default_read_var_value, /* la_read_var_value */ NULL, /* Language specific skip_trampoline */ "this", /* name_of_this */ basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */ @@ -1196,8 +1192,9 @@ const struct language_defn java_language_defn = default_print_array_index, default_pass_by_reference, default_get_string, - NULL, /* la_get_symbol_name_match_p */ + NULL, /* la_get_symbol_name_cmp */ iterate_over_symbols, + &java_varobj_ops, LANG_MAGIC };