match an existing output section, but an unused output section
statement does match, use it.
* emultempl/pe.em (_place_orphan): Likewise.
* emultempl/pep.em (_place_orphan): Likewise.
* ld-elf/orphan4.d: New.
* ld-elf/orphan4.ld: New.
* ld-elf/orphan4.s: New.
* arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
Arm_relobj::scan_sections_for_stubs): Rearrange code to avoid an
apparent compiler problem of not folding static constant integral
data members of elfcpp::Elf_sizes<32>.
* ld-mips-elf/jr-to-b-1.d, ld-mips-elf/jr-to-b-2.d: New tests.
* ld-mips-elf/jr-to-b-1.s, ld-mips-elf/jr-to-b-2.s: Source.
* ld-mips-elf/mips-elf.exp: Run new tests.
* elfxx-mips.c (JR_TO_B_P): New define to transform JR to B.
It is true for all CPUs.
(jal_reloc_p): New function.
(mips_elf_calculate_relocation): Rename require_jalxp to
cross_mode_jump_p.
Update comment for CROSS_MODE_JUMP_P.
Set up cross_mode_jump_p based on the mode change.
(mips_elf_perform_relocation): Rename require_jalx to cross_mode_jump_p.
Update comment for CROSS_MODE_JUMP_P.
Test cross_mode_jump_p and jal_reloc_p to turn jal to jalx.
Use !cross_mode_jump_p to guard conversion.
Convert "jr t9" to "b", if possible.
(_bfd_mips_elf_relocate_section): Rename require_jalx to
cross_mode_jump_p.
Pass &cross_mode_jump_p to call mips_elf_calculate_relocation.
Pass cross_mode_jump_p to call mips_elf_perform_relocation.
* arm.cc (Arm_relobj::section_needs_reloc_stub_scanning,
Arm_relobj::section_needs_cortex_a8_stub_scanning,
Arm_relobj::scan_section_for_cortex_a8_erratum,
Arm_relobj::scan_span_for_cortex_a8_erratum): New methods.
(Arm_relobj::scan_sections_for_stubs): Move code deciding what
sections to scan for relocation stubs into a new method
Arm_relobj::section_needs_reloc_stub_scanning. Handle both
relocation and Cortex-A8 stub scanning.
(Target_arm::do_relax): Force stubs to be after stubbed sections
if fixing the Cortex-A8 erratum. Remove all Cortex-A8 stubs at
the beginning of a new relaxation pass. Update a comment.
(Target_arm::scan_span_for_cortex_a8_erratum): New method definition.
warning message if a new section is created without setting any
attributes for it.
(md_pseudo_table): Intercept section creation pseudos.
(md_pcrel_from): Replace abort with an error message.
* config/obj-elf.c (obj_elf_section_name): Export this function.
* config/obj-elf.h (obj_elf_section_name): Prototype.
* gas/elf/section0.d: Skip this test for the h8300.
* gas/elf/section1.d: Likewise.
* gas/elf/section6.d: Likewise.
* gas/elf/elf.exp: Skip section2 and section5 tests when the
target is the h8300.
* ld-scrips/sort.exp: Skip these tests when the target is the
h8300.
* arm.cc (Cortex_a8_reloc): New class.
(Target_arm::Target_arm): Initialize new data members fix_cortex_a8_
and cortex_a8_relocs_info_.
(Target_arm::fix_cortex_a8): New method definition.
(Target_arm::Cortex_a8_relocs_info): New type.
(Target_arm::fix_cortex_a8_, Target_arm::cortex_a8_relocs_info_):
New data member declarations.
(Target_arm::scan_reloc_for_stub): Record information about
relocations for THUMB branches that might be exempted from the
Cortex-A8 workaround.
(Target_arm::do_relax): Clear all Cortex-A8 relocation information
at the beginning of a relaxation pass.
* arm.cc (Arm_relobj::mapping_symbols_info_): New data member.
(Arm_relobj::Mapping_symbol_position,
Arm_reloj::Mapping_symbol_position_less,
Arm_relobj::Mapping_symbols_info): New types.
(Target_arm::is_mapping_symbol_name): New method definition.
(Arm_relobj::do_count_local_symbols): Save information about mapping
symbols.
* arm.cc (Arm_relocate_functions::thumb32_branch_offset,
Arm_relocate_functions::thumb32_branch_upper,
Arm_relocate_functions::thumb32_branch_lower,
Arm_relocate_functions::thumb32_cond_branch_offset,
Arm_relocate_functions::thumb32_cond_branch_upper,
Arm_relocate_functions::thumb32_cond_branch_lower,
Arm_relocate_functions::thm_jump19): New methods to handle THUMB
branch offset encoding.
(Arm_relocate_functions::thumb_branch_common): Use new branch
offset encoding methods to avoid code duplication.
(Stub_template::Stub_template) Handle THUMB16_SPECIAL_TYPE.
(Stub_addend_reader::operator()): Use new branch encoding method
to avoid code duplication.
* arm.cc (Arm_relobj::do_gc_process_relocs): New method.
(Target_arm::do_finalize_sections): Define special EXIDX section
symbols only if referenced.
* gc.h (Garbage_collection::add_reference): New method.
(gc_process_relocs): Use Garbage_collection::add_reference to avoid
code duplication.
of 2009-12-30.
(Version_script_info::Version_script_info): Initialize globs_,
default_version_, default_is_global_, and exact_. Don't
initialize globals_ or locals_.
(Version_script_info::build_lookup_tables): Build local symbols
first.
(Version_script_info::unquote): New function.
(Version_script_info::add_exact_match): New function.
(Version_script_info::build_expression_list_lookup): Remove lookup
parameter. Add is_global parameter. Change all callers. Handle
wildcard pattern specially. Unquote pattern. Call
add_exact_match.
(Version_script_info::get_name_to_match): New function.
(Version_script_info::get_symbol_version): New function.
(Version_script_info::get_symbol_version_helper): Remove.
(Version_script_info::check_unmatched_names): Call unquote.
* script.h (class Version_script_info): Change get_symbol_version
to be non-inline and add is_global parameter; change all callers.
Rewrite symbol_is_local. Update declarations. Define struct
Version_tree_match, Exact, Globs. Don't define struct Lookup.
Remove globals_ and locals_ members. Add exact_, globs_,
default_version_, is_global_.
(Version_script_info::Glob): Remove pattern, add expression and
is_global. Update constructor. Change all callers.
* dynobj.cc (Versions::finalize): Mark the version symbol as the
default version.
(Versions::symbol_section_contents): If a symbol is undefined, or
defined in a dynamic object, set the version index to
VER_NDX_LOCAL.
* symtab.cc (Symbol_table::add_from_relobj): Don't call
symbol_is_local.
(Symbol_table::add_from_pluginobj): Likewise.
* testsuite/ver_matching_test.sh: blaza1 and blaza go into V2.
Add support for DW_AT_GNAT_descriptive_type.
* gdbtypes.h (enum type_specific_kind): New enum.
(struct main_type) [type_specific_field]: New component.
[type_specific]: Add new component "gnat_stuff".
(struct gnat_aux_type): New type.
(INIT_CPLUS_SPECIFIC): Also set TYPE_SPECIFIC_FIELD (type).
(HAVE_CPLUS_STRUCT): Also check TYPE_SPECIFIC_FIELD (type).
(gnat_aux_default, allocate_gnat_aux_type): Add declaration.
(INIT_GNAT_SPECIFIC, ALLOCATE_GNAT_AUX_TYPE, HAVE_GNAT_AUX_INFO)
(TYPE_SPECIFIC_FIELD): New macros.
(TYPE_CPLUS_SPECIFIC): Return cplus_struct_default if the given
type does not hold any cplus-specific data.
(TYPE_RAW_CPLUS_SPECIFIC): New macro.
(TYPE_GNAT_SPECIFIC, TYPE_DESCRIPTIVE_TYPE): New macros.
(TYPE_IS_OPAQUE): Use HAVE_CPLUS_STRUCT to check if type has
cplus-specific data.
* gdbtypes.c (allocate_cplus_struct_type): Minor stylistic rewrite.
Set new component TYPE_SPECIFIC_FIELD (type).
(gnat_aux_default): New constant.
(allocate_gnat_aux_type): New function.
(init_type): Add initialization the type-specific stuff for
TYPE_CODE_FLT and TYPE_CODE_FUNC types.
(print_gnat_stuff): New function.
(recursive_dump_type): Use HAVE_CPLUS_STRUCT to check for cplus-
specific data. Adjust code that prints the contents of the
type-specific union using the TYPE_SPECIFIC_FIELD value.
* dwarf2read.c (dwarf2_attach_fields_to_type): Do not allocate
the type cplus stuff for Ada types.
(dwarf2_add_member_fn, dwarf2_attach_fn_fields_to_type):
Error out if these routines are called with an Ada type.
(read_structure_type, read_array_type, read_subrange_type):
Add call to set_descriptive_type.
(set_die_type): Initialize the gnat-specific data if necessary.
(need_gnat_info, die_descriptive_type, set_descriptive_type):
New functions.
* ada-lang.c (decode_constrained_packed_array_type): Use
decode_constrained_packed_array_type instead of doing a standard
lookup to locate a parallel type.
(find_parallel_type_by_descriptive_type): New function.
(ada_find_parallel_type_with_name): New function.
(ada_find_parallel_type): Reimplement using
ada_find_parallel_type_with_name.
* ada-valprint.c (print_field_values): Use HAVE_CPLUS_STRUCT
to check if type has a cplus stuff.
* linespec.c (total_number_of_methods): Likewise.
* mdebugread.c (new_type): Likewise.
gdb/testsuite/ChangeLog:
* gdb.base/maint.exp: Adjust the expected output for the
"maint print type" test. Use gdb_test_multiple instead of
gdb_sent/gdb_expect.