X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fada-lang.c;h=f45815f7686d26cefa0dbb5ca386c64d23ee076f;hb=eaeb12dba0ce1af68f8b13d5151e78c146444bc6;hp=180fadb774d4c103ede90d8034ec42b149a80f5a;hpb=c8ea197278008d76c7a04fa2813ce470a5f34072;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 180fadb774..f45815f768 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -581,6 +581,7 @@ coerce_unspec_val_to_type (struct value *val, struct type *type) set_value_bitsize (result, value_bitsize (val)); set_value_bitpos (result, value_bitpos (val)); set_value_address (result, value_address (val)); + set_value_optimized_out (result, value_optimized_out (val)); return result; } } @@ -2534,8 +2535,7 @@ ada_value_assign (struct value *toval, struct value *fromval) else move_bits (buffer, value_bitpos (toval), value_contents (fromval), 0, bits, 0); - write_memory (to_addr, buffer, len); - observer_notify_memory_changed (to_addr, len, buffer); + write_memory_with_notification (to_addr, buffer, len); val = value_copy (toval); memcpy (value_contents_raw (val), value_contents (fromval), @@ -4061,7 +4061,7 @@ ada_read_renaming_var_value (struct symbol *renaming_sym, sym_name = xstrdup (SYMBOL_LINKAGE_NAME (renaming_sym)); old_chain = make_cleanup (xfree, sym_name); - expr = parse_exp_1 (&sym_name, block, 0); + expr = parse_exp_1 (&sym_name, 0, block, 0); make_cleanup (free_current_contents, &expr); value = evaluate_expression (expr); @@ -4139,7 +4139,7 @@ ada_convert_actual (struct value *actual, struct type *formal_type0) } else return actual; - return value_cast_pointers (formal_type, result); + return value_cast_pointers (formal_type, result, 0); } else if (TYPE_CODE (actual_type) == TYPE_CODE_PTR) return ada_value_ind (actual); @@ -4256,7 +4256,8 @@ static struct symbol * standard_lookup (const char *name, const struct block *block, domain_enum domain) { - struct symbol *sym; + /* Initialize it just to avoid a GCC false warning. */ + struct symbol *sym = NULL; if (lookup_cached_symbol (name, domain, &sym, NULL)) return sym; @@ -5470,7 +5471,7 @@ advance_wild_match (const char **namep, const char *name0, int target0) static int wild_match (const char *name, const char *patn) { - const char *p, *n; + const char *p; const char *name0 = name; while (1) @@ -5515,7 +5516,7 @@ ada_add_block_symbols (struct obstack *obstackp, domain_enum domain, struct objfile *objfile, int wild) { - struct dict_iterator iter; + struct block_iterator iter; int name_len = strlen (name); /* A matching argument symbol, if any. */ struct symbol *arg_sym; @@ -5527,9 +5528,8 @@ ada_add_block_symbols (struct obstack *obstackp, found_sym = 0; if (wild) { - for (sym = dict_iter_match_first (BLOCK_DICT (block), name, - wild_match, &iter); - sym != NULL; sym = dict_iter_match_next (name, wild_match, &iter)) + for (sym = block_iter_match_first (block, name, wild_match, &iter); + sym != NULL; sym = block_iter_match_next (name, wild_match, &iter)) { if (symbol_matches_domain (SYMBOL_LANGUAGE (sym), SYMBOL_DOMAIN (sym), domain) @@ -5551,9 +5551,8 @@ ada_add_block_symbols (struct obstack *obstackp, } else { - for (sym = dict_iter_match_first (BLOCK_DICT (block), name, - full_match, &iter); - sym != NULL; sym = dict_iter_match_next (name, full_match, &iter)) + for (sym = block_iter_match_first (block, name, full_match, &iter); + sym != NULL; sym = block_iter_match_next (name, full_match, &iter)) { if (symbol_matches_domain (SYMBOL_LANGUAGE (sym), SYMBOL_DOMAIN (sym), domain)) @@ -5798,11 +5797,10 @@ ada_expand_partial_symbol_name (const char *name, void *user_data) data->wild_match, data->encoded) != NULL; } -/* Return a list of possible symbol names completing TEXT0. The list - is NULL terminated. WORD is the entire command on which completion - is made. */ +/* Return a list of possible symbol names completing TEXT0. WORD is + the entire command on which completion is made. */ -static char ** +static VEC (char_ptr) * ada_make_symbol_completion_list (char *text0, char *word) { char *text; @@ -5816,7 +5814,7 @@ ada_make_symbol_completion_list (char *text0, char *word) struct objfile *objfile; struct block *b, *surrounding_static_block = 0; int i; - struct dict_iterator iter; + struct block_iterator iter; if (text0[0] == '<') { @@ -5915,24 +5913,7 @@ ada_make_symbol_completion_list (char *text0, char *word) } } - /* Append the closing NULL entry. */ - VEC_safe_push (char_ptr, completions, NULL); - - /* Make a copy of the COMPLETIONS VEC before we free it, and then - return the copy. It's unfortunate that we have to make a copy - of an array that we're about to destroy, but there is nothing much - we can do about it. Fortunately, it's typically not a very large - array. */ - { - const size_t completions_size = - VEC_length (char_ptr, completions) * sizeof (char *); - char **result = xmalloc (completions_size); - - memcpy (result, VEC_address (char_ptr, completions), completions_size); - - VEC_free (char_ptr, completions); - return result; - } + return completions; } /* Field Access */ @@ -10821,7 +10802,6 @@ static void ada_exception_support_info_sniffer (void) { struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ()); - struct symbol *sym; /* If the exception info is already known, then no need to recompute it. */ if (data->exception_info != NULL) @@ -11161,7 +11141,8 @@ create_excep_cond_exprs (struct ada_catchpoint *c) s = cond_string; TRY_CATCH (e, RETURN_MASK_ERROR) { - exp = parse_exp_1 (&s, block_for_pc (bl->address), 0); + exp = parse_exp_1 (&s, bl->address, + block_for_pc (bl->address), 0); } if (e.reason < 0) warning (_("failed to reevaluate internal exception condition " @@ -12519,7 +12500,6 @@ const struct language_defn ada_language_defn = { "ada", /* Language name */ language_ada, range_check_off, - type_check_off, case_sensitive_on, /* Yes, Ada is case-insensitive, but that's not quite what this means. */ array_row_major, @@ -12678,5 +12658,5 @@ With an argument, catch only exceptions with the given name."), /* Setup per-inferior data. */ observer_attach_inferior_exit (ada_inferior_exit); ada_inferior_data - = register_inferior_data_with_cleanup (ada_inferior_data_cleanup); + = register_inferior_data_with_cleanup (NULL, ada_inferior_data_cleanup); }