Code cleanup.
* c-typeprint.c (c_type_print_args): Change parameter show_artificial
to linkage_name. Invert its value. Update the function comment.
(c_type_print_varspec_suffix): Invert it at the caller.
* dwarf2read.c (dwarf2_compute_name): Invert it at the caller.
Revert:
2011-03-21 Jan Kratochvil <jan.kratochvil@redhat.com>
* dwarf2read.c (producer_is_gxx_lt_4_6): New function.
(dwarf2_add_field): Fix new_field->accessibility for
cu->header.version >= 3 while verifying also producer_is_gxx_lt_4_6.
* dwarf2read.c (producer_is_gxx_lt_4_6): New function.
(dwarf2_add_field): Fix new_field->accessibility for
cu->header.version >= 3 while verifying also producer_is_gxx_lt_4_6.
* dwarf2read.c (dwarf2_get_pc_bounds): Require HIGH strictly higher
than LOW. Comment it.
(read_partial_die): Call complaint for inappropriate zero LOWPC or
HIGHPC not strictly higher than LOWPC.
gdb/testsuite/
* gdb.dwarf2/dw2-empty-pc-range.S: New file.
* gdb.dwarf2/dw2-empty-pc-range.exp: New file.
* gdb.dwarf2/pr11465.S: New .text labels text_start and text_end.
Provide a stub byte there.
(DW_TAG_compile_unit): Set DW_AT_low_pc, DW_AT_high_pc and
DW_AT_entry_pc.
(dieb4, dieda): Set DW_AT_high_pc higher than DW_AT_low_pc.
(dwarf2_read_section): Use dwarf2_section_empty_p.
(dwarf2_section_size): New function.
(dwarf2_get_section_info): Unconditionally read section.
(dwarf2_read_index): Use dwarf2_section_empty_p.
(partial_read_comp_unit_head): Use dwarf2_section_size.
(dwarf2_symbol_mark_computed): Likewise.
PR fortran/11104 and DWARF unbound arrays detection.
* dwarf2read.c (read_subrange_type): Set zero length on unspecified
upper bound. Set TYPE_HIGH_BOUND_UNDEFINED if not language_ada on
unspecified upper bound.
* eval.c (evaluate_subexp_standard) <multi_f77_subscript>: Remove
variables array_size_array, tmp_type and offset_item. New variable
array. Remove call to f77_get_upperbound. New variables array_type
and index. Call value_subscripted_rvalue for each dimenasion. Remove
the final call to deprecated_set_value_type.
gdb/testsuite/
PR fortran/11104 and DWARF unbound arrays detection.
* gdb.fortran/multi-dim.exp: New file.
* gdb.fortran/multi-dim.f90: New file.
(dwarf2_per_cu_quick_data): Move definition down to "quick functions"
section. Delete members lines full_names. Rename read_lines to
no_file_data.
(quick_file_names): New struct.
(hash_file_name_entry, eq_file_name_entry): New functions.
(delete_file_name_entry, create_quick_file_names_table): New functions.
(dwarf2_read_index): Initialize quick_file_names_table.
(dw2_get_file_names): Renamed from dw2_require_line_header.
Return pointer to quick_file_names entry. All callers updated.
(dw2_get_real_path): Renamed from dw2_require_full_path.
Replace per_cu arg with pointer to quick_file_names entry.
All callers updated.
(dw2_free_cached_file_names): New function.
(dw2_forget_cached_source_info): Call it (via htab_traverse_noresize).
(dwarf2_initialize_objfile): Initialize quick_file_names_table in
the OBJF_READNOW case.
(dwarf2_free_objfile): Rewrite freeing of quick file names tables.
* dwarf2read.c (struct psymtab_cu_index_map): New struct.
(hash_psymtab_cu_index, eq_psymtab_cu_index): New functions.
(struct addrmap_index_data): New struct.
(add_address_entry): Remove arg `pst', new args `start', `end'.
(add_address_entry_worker, write_address_map): New functions.
(write_psymtabs_to_index): Address table generation moved to
write_address_map. Build a table mapping psymtab to CU index
to pass to it.
Code cleanup.
* dwarf2read.c (alloc_one_comp_unit): Rename prototype to ...
(init_one_comp_unit): ... this one.
(prepare_one_comp_unit): New prototype.
(dw2_require_line_header, process_psymtab_comp_unit): Use
init_one_comp_unit.
(process_psymtab_comp_unit): Use prepare_one_comp_unit.
(load_partial_comp_unit): Remove variable attr. Use
init_one_comp_unit with xmalloc. Use prepare_one_comp_unit.
(load_full_comp_unit): Use init_one_comp_unit with xmalloc. Use
prepare_one_comp_unit.
(read_signatured_type): Remove variable attr. Use init_one_comp_unit.
Use prepare_one_comp_unit.
(alloc_one_comp_unit): Rename to ...
(init_one_comp_unit): ... here and remove there calloc, new parameter
cu.
(prepare_one_comp_unit): New function.
* dwarf2read.c (read_array_type): Read the DW_AT_byte_size from the
DIE and set the length of the type.
* gdbtypes.h (get_array_bounds): Move here from valprint.h.
* gdbtypes.c (get_array_bounds): Move here from valprint.c and
return 0 if the corresponding bounds of the type are undefined.
* valprint.h (get_array_bounds): Move declaration to gdbtypes.h.
* valprint.c (get_array_bounds): Move implementation to gdbtypes.c.
(val_print_array_elements): Use get_array_bounds to compute the number
of array elements instead of dividing the length of the array by the
length of the element types.
* valarith.c (vector_binop): Likewise.
* valops.c (value_cast): Likewise.
* c-valprint.c (c_val_print): Likewise.
* c-typeprint.c (c_type_print_varspec_suffix): Likewise.
gdb/testsuite:
* gdb.base/gnu_vector.exp: Adjust expect messages.
Fix the `stopped language detection' testcase for gcc-4.5.
* dwarf2read.c (read_partial_die): Set also LANGUAGE_OF_MAIN.
* symfile.c (set_initial_language): Move variable filename to a more
inner block. Prefer LANGUAGE_OF_MAIN.
* symtab.c (language_of_main): New variable.
(set_main_name): Always reset LANGUAGE_OF_MAIN.
* symtab.h (language_of_main): New declaration.
symbol_table and index_table_slots to symbol_table_slots.
All uses updated.
(create_symbol_hash_table): Renamed from create_index_table.
All callers updated.
(add_indices_to_cpool): Rename arg index_table to symbol_hash_table.
(write_hash_table): Rename local index_table to symbol_hash_table.
This is a clean-up of some of our symbol-lookup machinery to pull some
kludgy Ada-specific definitions out of psymtab.c. In place of
map_ada_symtabs and ada_lookup_partial_symbol, we have a method
map_matching_symbols, which searches through all symbol tables and
partial symbol tables looking for a symbol that matches according to
a matching function that is passed as a parameter. This requires some
care, because partial symbol tables speed up searches by binary search,
while full symbol tables use hashing. To call map_matching_symbols, therefore,
you may need to supply both a matching function that is compatible with the
dictionary hash function and an ordering relation that is compatible with
strcmp_iw, which is used to order partial symbol tables.
Having added this general routine to psymtab.c, we use it in ada-lang.c
to rework add_non_local_symbols (now renamed add_nonlocal_symbols).
Changelog:
gdb/
* ada-lang.c (full_match): Declare.
(ada_match_name): Rename to match_name (we should avoid prefixing static
symbols with "ada_").
(match_name): New name for ada_match_name.
(struct ada_psym_data): Remove and replace with...
(struct match_data): User data for map_matching_symbols.
(ada_add_psyms): Remove.
(aux_add_nonlocal_symbols): New function, used as callback for
map_matching_symbols.
(compare_names): Ordering function adopted from strcmp_iw for Ada-encoded
symbols.
(ada_add_non_local_symbols): Rename to add_nonlocal_symbols.
(add_nonlocal_symbols): Renamed from ada_add_non_local_symbols.
Rework to use map_matching_symbols instead of map_ada_symtabs.
(ada_lookup_symbol_list): Use add_nonlocal_symbols.
* psymtab.c: Include dependency on dictionary.h.
(match_partial_symbol): New function.
(ada_lookup_partial_symbol): Remove.
(map_block): New function, auxiliary to map_matching_symbols_psymtab.
(map_matching_symbols_psymtab): New function.
(psym_functions): Replace map_ada_symtabs with map_matching_symbols_psymtab.
* symfile.h: Replace map_ada_symtabs definition with map_matching_symbols.
This new version of wild_match is comparable in speed to strcmp_iw, and has
the same signature and same return value for equal names.
gdb/ChangeLog:
* ada-lang.c (wild_match): Reimplement.
Change API to eliminate unused length argument, reverse arguments and
make 0 the 'true' return value.
(advance_wild_match): New auxiliary function for wild_match to improve
readability.
(ada_match_name, ada_add_block_symbols): Use new API for wild_match.
* psymtab.c (ada_lookup_partial_symbol, map_ada_symtabs): Use new
API for wild_match.
* symfile.h (map_ada_symtabs): Modify declaration to use new API for
wild_match.
* dwarf2read.c (dw2_map_ada_symtabs): Ditto.