* elfxx-sparc.c (_bfd_sparc_elf_check_relocs): For R_SPARC_GOTDATA_OP_HIX22
and R_SPARC_GOTDATA_OP_LOX10, only bump the GOT refcount for global
symbols.
(_bfd_sparc_elf_gc_sweep_hook): Likewise only decrement the GOT count for
these relocs on global symbols.
(gdopoff): New.
(_bfd_sparc_elf_relocate_section): Perform GOTDATA optimizations on
local symbol references which are not STT_GNU_IFUNC. Handle
relocation of them like R_SPARC_HIX22 and R_SPARC_LOX10 respectively,
and deal with negative vs. non-negative values properly.
ld/testsuite
* ld-sparc/gotop32.s: Add local symbol case.
* ld-sparc/gotop64.s: Likewise.
* ld-sparc/gotop32.rd: Adjust expected results.
* ld-sparc/gotop32.td: Likewise.
* ld-sparc/gotop64.dd: Likewise.
* ld-sparc/gotop64.rd: Likewise.
* ld-sparc/gotop64.td: Likewise.
queueing any tasks.
* gold.cc (queue_middle_gc_tasks): Likewise. Fix final blocker.
(queue_middle_tasks): Add all blockers before queueing any tasks.
(queue_final_tasks): Likewise.
* token.h (Task_token::add_blockers): New function.
* object.h (Input_objects::number_of_relobjs): New function.
shared, not if not position independent.
* x86_64.cc (Relocate::relocate_tls): Likewise.
* testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
(tls_pie_pic_test): New target.
* testsuite/Makefile.in: Rebuild.
whitespace character after a dot in comment.
(mi_cmd_stack_list_arguments, mi_cmd_stack_list_variables):
Likewise.
(list_args_or_locals): For the 'all' (that is
-stack-list-variables) case, always output list of tuples.
Output 'arg' field if variable is argument.
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.