that takes two Output_data objects.
(Output_data_dynamic::Dynamic_entry): Create storage for secondary
entry param. Handle it in initializers.
* output.cc (Output_data_dynamic::Dynamic_entry::write): For
DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
* layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
arg.
* layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
* arm.cc (Target_arm::do_finalize_sections): Update to pass false
for dynrel_includes_plt.
* i386.cc (Target_i386::do_finalize_sections): Likewise.
* x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
* sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
before .rela.plt
(Target_sparc::do_finalize_sections): Update to pass true for
dynrel_includes_plt.
* powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
output before .rela.plt
(Target_powerpc::do_finalize_sections): Update to pass true for
dynrel_includes_plt when 32-bit.
* machoread.c (macho_symfile_relocate): New function.
(macho_sym_fns): Use macho_symfile_relocate instead of
default_symfile_relocate.
(macho_oso_data): New type.
(current_oso): New variable.
(macho_add_oso_symfile): Do not compute section_addr_info, but
instead set vma of sections.
Do not set SYMFILE_VERBOSE to call symbol_file_add_from_bfd.
Set and clear current_oso.
gas/
* config/tc-arm.c (md_pcrel_from_section): Keep base to zero for
non-local branches (BFD_RELOC_THUMB_PCREL_BRANCH23,
BFD_RELOC_THUMB_PCREL_BLX, BFD_RELOC_ARM_PCREL_BLX,
BFD_RELOC_ARM_PCREL_CALL)
gas/testsuite/
* gas/arm/branch-reloc.s, gas/arm/branch-reloc.d,
gas/arm/branch-reloc.l: New tests and expected results with all
variants of call: ARM/Thumb, local/global, inter/intra-section,
using BL/BLX.
* ada-lang.c (ada_evaluate_subexp) [OP_VAR_VALUE]: When noside is
EVAL_AVOID_SIDE_EFFECTS, also handle the case when type is a
reference to a tagged type.
(allocate_dynrelocs): Merge got entries here if not doing multi-toc.
(ppc64_elf_size_dynamic_sections): Similarly merge tlsld_got.
(ppc64_elf_layout_multitoc): Don't resize if we have already
merged got entries.
* arm.cc (Arm_relobj::simple_input_section_output_address): New
method.
(Arm_relobj::section_needs_cortex_a8_stub_scanning,
Arm_relobj::scan_section_for_cortex_a8_stubs,
Arm_relobj::do_relocation_section): Instead of calling
Output_section::output_address, use faster
Arm_relobj::simple_input_section_output_address.
2010-02-08 David S. Miller <davem@davemloft.net>
* sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
relocation helper function.
* elf/sparc.h (R_SPARC_JMP_IREL, R_SPARC_IRELATIVE): Define.
bfd/
* reloc.c (BFD_RELOC_SPARC_JMP_IREL): New.
(BFD_RELOC_SPARC_IRELATIVE): Likewise.
* bfd-in2.h: Regenerate.
* libbfd.h: Regenerate.
* elfxx-sparc.h (_bfd_sparc_elf_link_hash_table): Add loc_hash_table
and loc_hash_memory.
(_bfd_sparc_elf_link_hash_table_free): Declare.
* elf32-sparc.c (elf32_sparc_add_symbol_hook): New.
(elf_backend_add_symbol_hook, elf_backend_post_process_headers,
bfd_elf32_bfd_link_hash_table_free): Define.
* elf64-sparc.c (elf64_sparc_add_symbol_hook): Set
has_ifunc_symbols if STT_GNU_IFUNC.
(bfd_elf64_bfd_link_hash_table_free): Define.
(elf_backend_post_process_headers): Define always.
* elfxx-sparc.c (sparc_jmp_irel_howto, sparc_irelative_howto): New.
(sparc_reloc_map): Add entries for new IFUNC relocs.
(_bfd_sparc_elf_reloc_type_lookup): Handle new IFUNC relocs.
(_bfd_sparc_elf_info_to_howto_ptr): Likewise.
(elf_sparc_local_htab_hash, elf_sparc_local_htab_eq,
elf_sparc_get_local_sym_hash): New.
(_bfd_sparc_elf_create_dynamic_sections): Move PLT ops initialization
from here...
(_bfd_sparc_elf_link_hash_table_create): ... to here. Allocate
local hash table.
(_bfd_sparc_elf_link_hash_table_free): New.
(create_ifunc_sections): New.
(_bfd_sparc_elf_check_relocs): Unconditionally assign htab->elf.dynobj
and call create_ifunc_sections(). For local STT_GNU_IFUNC symbols
cons up a fake local hash table entry for it. Unconditionally add
a PLT refcount for STT_GNU_IFUNC symbols when h->def_regular. Count
dyn relocs for ifunc.
(_bfd_sparc_elf_adjust_dynamic_symbol): Handle ifunc.
(allocate_dynrelocs): Unconditionally emit a PLT entry when STT_GNU_IFUNC
and h->def_regular. Count GOT dyn relocs for ifunc.
(allocate_local_dynrelocs): New function.
(_bfd_sparc_elf_size_dynamic_sections): Invoke it over the local hash table.
Emit dynamic relocs to irelplt when not shared. Treat iplt like splt.
(_bfd_sparc_elf_relocate_section): Handle ifunc relocations by hand.
(_bfd_sparc_elf_finish_dynamic_symbol): Adjust for non-dynamic ifunc plt
in iplt/irelplt.
ld/testsuite/
* ld-ifunc/ifunc.exp: Run for sparc.
* elfxx-sparc.h (struct _bfd_sparc_elf_link_hash_table): Remove sgot,
srelgot, splt, srelplt, and sgotplt members in favor of generic copies.
* elfxx-sparc.c (create_got_section): Delete.
(_bfd_sparc_elf_create_dynamic_sections): Don't call, the dynamic
section creator does that work for us. Use ->elf.foo instead of
->foo where applicable.
(_bfd_sparc_elf_check_relocs): Use ->elf.foo instead of ->foo
where applicable.
(allocate_dynrelocs): Likewise.
(_bfd_sparc_elf_size_dynamic_sections): Likewise.
(_bfd_sparc_elf_relocate_section): Likewise.
(sparc_vxworks_build_plt_entry): Likewise.
(_bfd_sparc_elf_finish_dynamic_symbol): Likewise.
(sparc_finish_dyn): Likewise.
(sparc_vxworks_finish_exec_plt): Likewise.
(sparc_vxworks_finish_shared_plt): Likewise.
(_bfd_sparc_elf_finish_dynamic_sections): Likewise.
* elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Use the SYMBOL_*
macros for visibilty and locality checks.
(_bfd_sparc_elf_adjust_dynamic_symbol): Likewise.
(allocate_dynrelocs): Likewise.
(_bfd_sparc_elf_relocate_section): Likewise.
(_bfd_sparc_elf_finish_dynamic_symbol):Likewise.
* elfxx-sparc.c (_bfd_sparc_elf_finish_dynamic_symbol): Remove set
but never used local var 'dynobj'.
* elfxx-sparc.c (_bfd_sparc_elf_adjust_dynamic_symbol): Handle
nocopyreloc.
* valarith.c (value_ptrdiff): Added a test for a zero type length,
warn if found, and assume length = 1.
* gdb.cp/pr10728-x.h: New file.
* gdb.cp/pr10728-x.cc: New file.
* gdb.cp/pr10728-y.cc: New file.
* gdb.cp/pr10728.exp: New file.
* gdb.cp/Makefile.in (EXECUTABLES): Add pr10728
* cp-valprint.c (cp_print_value_fields) Fix use of obstacks.
cp_print_static_field) Fix use of obstacks.
* gdb.cp/pr9067.exp: New
* gdb.cp/pr9067.cc: New
* gdb.cp/Makefile.in (EXECUTABLES): Add pr9067
resumed LWPs as resumed.
(linux_nat_wait_1): If there's no resumed LWP in the set of LWPs
we're waiting for, bail out with TARGET_WAITKIND_IGNORE, instead
of throwing an internal error. If an LWP of a process we're not
waiting for reports a signal, don't force collecting a SIGSTOP,
and if it was breakpoint hit in non-stop mode, cancel it. Don't
go through all LWPs cancelling breakpoints in non-stop mode.
(resume_stopped_resumed_lwps): New.
(linux_nat_wait): Use it.
a new address, so as not to reuse a previous, non-related reloc.
* gas/arm/arm-it-auto.d, gas/arm/bl-local-v4t.d,
gas/arm/blx-local.d, gas/arm/thumb-w-good.d: Update expected
results.