/* Java language support routines for GDB, the GNU debugger.
- Copyright (C) 1997-2015 Free Software Foundation, Inc.
+ Copyright (C) 1997-2016 Free Software Foundation, Inc.
This file is part of GDB.
static void
jv_per_objfile_free (struct objfile *objfile, void *data)
{
- struct jv_per_objfile_data *jv_data = data;
+ struct jv_per_objfile_data *jv_data = (struct jv_per_objfile_data *) data;
struct objfile *dynamics_objfile;
- dynamics_objfile = program_space_data (current_program_space,
- jv_dynamics_progspace_key);
+ dynamics_objfile
+ = (struct objfile *) program_space_data (current_program_space,
+ jv_dynamics_progspace_key);
gdb_assert (objfile == dynamics_objfile);
if (jv_data->dict)
{
struct objfile *dynamics_objfile;
- dynamics_objfile = program_space_data (current_program_space,
- jv_dynamics_progspace_key);
+ dynamics_objfile
+ = (struct objfile *) program_space_data (current_program_space,
+ jv_dynamics_progspace_key);
if (dynamics_objfile == NULL)
{
BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK) = bl;
/* Arrange to free the dict. */
- jv_data = objfile_data (objfile, jv_dynamics_objfile_data_key);
+ jv_data = ((struct jv_per_objfile_data *)
+ objfile_data (objfile, jv_dynamics_objfile_data_key));
jv_data->dict = BLOCK_DICT (bl);
}
return class_symtab;
{
struct symbol *sym;
- sym = lookup_symbol (name, expression_context_block, STRUCT_DOMAIN, NULL);
+ sym = lookup_symbol (name, expression_context_block, STRUCT_DOMAIN,
+ NULL).symbol;
if (sym != NULL)
return SYMBOL_TYPE (sym);
/* FIXME - should search inferior's symbol table. */
temp = value_struct_elt (&temp, NULL, "length", NULL, "structure");
name_length = (int) value_as_long (temp);
data_addr = value_address (temp) + TYPE_LENGTH (value_type (temp));
- chrs = obstack_alloc (obstack, name_length + 1);
+ chrs = (char *) obstack_alloc (obstack, name_length + 1);
chrs[name_length] = '\0';
read_memory (data_addr, (gdb_byte *) chrs, name_length);
return chrs;
int namelen = java_demangled_signature_length (signature);
if (namelen > strlen (name))
- name = obstack_alloc (&objfile->objfile_obstack, namelen + 1);
+ name = (char *) obstack_alloc (&objfile->objfile_obstack, namelen + 1);
java_demangled_signature_copy (name, signature);
name[namelen] = '\0';
temp = clas;
{
struct symbol *sym;
- sym = lookup_symbol ("java.lang.Object", NULL, STRUCT_DOMAIN, NULL);
+ sym = lookup_symbol ("java.lang.Object", NULL, STRUCT_DOMAIN, NULL).symbol;
if (sym == NULL)
error (_("cannot find java.lang.Object"));
return SYMBOL_TYPE (sym);
java_demangle_type_signature (const char *signature)
{
int length = java_demangled_signature_length (signature);
- char *result = xmalloc (length + 1);
+ char *result = (char *) xmalloc (length + 1);
java_demangled_signature_copy (result, signature);
result[length] = '\0';
return gdb_demangle (mangled, options | DMGL_JAVA);
}
+/* la_sniff_from_mangled_name for Java. */
+
+static int
+java_sniff_from_mangled_name (const char *mangled, char **demangled)
+{
+ *demangled = java_demangle (mangled, DMGL_PARAMS | DMGL_ANSI);
+ return *demangled != NULL;
+}
+
/* Find the member function name of the demangled name NAME. NAME
must be a method name including arguments, in order to correctly
locate the last component.
end = java_find_last_component (demangled_name);
if (end != NULL)
{
- ret = xmalloc (end - demangled_name + 1);
+ ret = (char *) xmalloc (end - demangled_name + 1);
memcpy (ret, demangled_name, end - demangled_name);
ret[end - demangled_name] = '\0';
}
evaluate_subexp_java
};
+static const char *java_extensions[] =
+{
+ ".java", ".class", NULL
+};
+
const struct language_defn java_language_defn =
{
"java", /* Language name */
case_sensitive_on,
array_row_major,
macro_expansion_no,
+ java_extensions,
&exp_descriptor_java,
java_parse,
- java_error,
+ java_yyerror,
null_post_parser,
java_printchar, /* Print a character constant */
java_printstr, /* Function to print string constant */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
basic_lookup_transparent_type,/* lookup_transparent_type */
java_demangle, /* Language specific symbol demangler */
+ java_sniff_from_mangled_name,
java_class_name_from_physname,/* Language specific class name */
java_op_print_tab, /* expression operators for printing */
0, /* not c-style arrays */
builtin_java_type->builtin_char
= arch_character_type (gdbarch, 16, 1, "char");
builtin_java_type->builtin_float
- = arch_float_type (gdbarch, 32, "float", NULL);
+ = arch_float_type (gdbarch, 32, "float", floatformats_ieee_single);
builtin_java_type->builtin_double
- = arch_float_type (gdbarch, 64, "double", NULL);
+ = arch_float_type (gdbarch, 64, "double", floatformats_ieee_double);
builtin_java_type->builtin_void
= arch_type (gdbarch, TYPE_CODE_VOID, 1, "void");
const struct builtin_java_type *
builtin_java_type (struct gdbarch *gdbarch)
{
- return gdbarch_data (gdbarch, java_type_data);
+ return ((const struct builtin_java_type *)
+ gdbarch_data (gdbarch, java_type_data));
}
void