* elf.c (IS_LOADED): Define.
(assign_file_positions_for_segments): Don't round up file offset of
PT_LOAD segments containing no SEC_LOAD sections, instead round down.
Delete code handling link script adjustment of lma. Do the adjust
in later code handling similar ajustments. Remove dead code error
check. Warn if section lma would require a negative offset
adjustment. Tweak lma adjustment to use p_filesz rather than p_memsz.
Use p_vaddr + p_memsz inside section loop in place of voff. Don't
update voff in section loop. Change voff in segment loop to be an
adjustment on top of "off". Set sec->filepos and update "off" later.
Test for loadable sections consistently using IS_LOADED. Similarly,
test for alloc-only sections other than .tbss consistently.
Don't bother checking SEC_ALLOC in PT_LOAD segments. Remove FIXME.
Tidy PT_NOTE handling. Use %B and %A in error messages.
(assign_file_positions_except_relocs): Use %B in error message.
ld/testsuite/
* ld-scripts/overlay-size.d: Don't check .mbss lma.
* ld-sh/sh64/mix1.xd: Update for changed .bss file offset.
* ld-sh/sh64/shdl32.xd: Likewise.
* ld-sh/sh64/shdl64.xd: Likewise.
* elf32-arm.h (elf32_arm_gc_sweep_hook): Add #ifndef OLD_ARM_ABI
around uses of R_ARM_TARGET1.
(elf32_arm_check_relocs): Likewise.
ld/
* emultempl/armelf_oabi.em (before_allocation): Add extra zero param
to bfd_elf32_arm_process_before_allocation call.
(hpux_core_core_file_p): Fix computation of offset in call
to bfd_seek. Create a ".reg" section from an arbitrary
".reg/<id>" section if none was created after having read
all sections.
case R_CRIS_32_GOTPLT>: For internal error message, handle NULL
symname.
(cris_elf_check_relocs) <case R_CRIS_32_PLT_PCREL>: Don't try to
handle symbol visibility here.
(is_ppc64_elf_target): Rename from is_ppc64_target. Update all
callers.
(ppc_stub_name): Remove trailing "+0" on stub name.
(create_linkage_sections): Create relocations for
branch lookup table when --emit-relocs as well as when --shared.
(ppc_build_one_stub): Emit relocs for long branch stubs. Adjust
relbrlt test. For --emit-stub-syms, always output a sym even when
one already exists on a plt call stub. Put stub type in the stub
symbol name.
(ppc_size_one_stub): Size long branch stub relocs. Adjust relbrlt
test.
(ppc64_elf_size_stubs): Count global sym stubs added. Zero
reloc_count in stub sections. Adjust relbrlt test.
(ppc64_elf_build_stubs): Adjust relbrlt test. Tweak stats output.
* elflink.c (bfd_elf_size_dynamic_sections): Fix comment typo.
(elf_link_input_bfd): Ignore symbol index zero relocs when checking
for relocs against discarded symbols. Fix comments.
* elf.c (_bfd_elf_make_dynamic_segment): New function, split out
from ...
(map_sections_to_segments): ... here. Use it. Assign a file
position to the .dynamic section if it is not loadable, but part
of the PT_DYNAMIC segment.
* elf32-arm.h (elf32_arm_finish_dynamic_sections): Use file
offsets, not VMAs, for the BPABI. Do not fill in the header in
the .got.plt section for the BPABI.
* elfarm-nabi.c (elf32_arm_symbian_modify_segment_map): Add a
PT_DYNAMIC segment.
(elf_backend_want_got_plt): Define to zero for Symbian OS.
* emulparams/armsymbian.sh: Use armbpabi script.
* scripttempl/armbpabi.sc: New script.
(ppc64_elf_check_directives): ..here.
(ppc64_elf_size_dynamic_sections): Use it here to check bfd type
before accessing ppc64_elf_tdata.
(ppc64_elf_finish_dynamic_sections): And here too.
* configure.in (bfd_elf32_bigarm_symbian_vec): Add it.
(bfd_elf32_littlearm_symbian_vec): Likewise.
* configure: Regenerated.
* elf-bfd.h (elf_backend_data): Add dynamic_sec_flags.
* elf32-arm.h (PLT_HEADER_SIZE): Do not define.
(PLT_ENTRY_SIZE): Likewise.
(bfd_vma_elf32_arm_symbian_plt_entry): New
variable.
(elf32_arm_link_hash_table): Add plt_header_size, plt_entry_size,
and symbian_p.
(create_got_section): Don't create sections when generating BPABI
objects.
(elf32_arm_create_dynamic_sections): Tidy.
(elf32_arm_link_hash_table_create): Set plt_header_size,
plt_entry_size, and symbian_p.
(elf32_arm_check_relocs): Do not mark .rel.dyn as loadable when
generating BPABI objects.
(allocate_dynrelocs): Use htab->plt_header_size, not
PLT_HEADER_SIZE. Do not add to .got.plt when
generating BPABI objects.
(elf32_arm_finish_dynamic_symbol): Generate Symbian OS PLTs.
* elfarm-nabi.c: Add SymbianOS target vectors.
* elflink.c (_bfd_elf_create_got_section): Use dynamic_sec_flags.
(_bfd_elf_link_create_dynamic_sections): Likewise.
* elfxx-target.h (ELF_DYNAMIC_SEC_FLAGS): New macro.
(elfNN_bed): Use it.
* targets.c (bfd_elf32_bigarm_symbian_vec): New variable.
(bfd_elf32_littlearm_symbian_vec): Likewise.
(_bfd_target_vector): Add them.
* Makefile.am (TARG_ENV_HFILES): Add te-symbian.h.
* Makefile.in: Regenerated.
* configure.in: Set em for arm*-*-symbianelf*.
* configure: Regenerated.
* config/tc-arm.c (elf32_arm_target_format): Use Symbian target
vectors when appropriate.
* config/te-symbian.h: New file.
* Makefile.am (ALL_EMULATIONS): Add earmsymbian.o.
(earmsymbian.c): New target.
* configure.tgt: Use armsymbian emulation for arm*-*-symbianelf*.
* Makefile.in: Regenerated.
* aclocal.m4: Likewise.
* configure: Likewise.
* emulparams/armsymbian.sh: New file.
* acinclude.m4: Require AC_CANONICAL_TARGET, not AC_CANONICAL_SYSTEM.
Include ../config/acx.m4 and use ACX_NONCANONICAL_* where appropriate;
replace uses of *_alias with *_noncanonical.
* aclocal.m4: Rebuild with aclocal 1.4p6.
* Makefile.in: Rebuild with automake 1.4p6.
* doc/Makefile.in: Rebuild with automake 1.4p6.
* configure.in: Autoupdate with autoupdate 2.59.
* config.in: Regenerate with autoheader 2.59.
* configure: Regnerate with autoconf 2.59.
* bfd.c (bfd_get_synthetic_symtab): Pass counts and both symbol tables.
* elf-bfd.h (_bfd_elf_get_synthetic_symtab): Adjust.
* elf.c (_bfd_elf_get_synthetic_symtab): Adjust.
* libbfd-in.h (_bfd_nodynamic_get_synthetic_symtab): Adjust.
* targets.c (struct bfd_target <_bfd_get_synthetic_symtab>): Adjust.
* elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Don't read symbols.
Use both symbol tables on non-relocatable objects. Use a common
error exit. Fix "mid" warning.
* libbfd.h: Regenerate.
* bfd-in2.h: Regenerate.
binutils/
* objdump.c (dump_bfd): Pass both symbol tables to
bfd_get_synthetic_symtab.
object file.
(struct sfpr_def_parms): Save some space.
(sfpr_define): Here too.
* elf64-ppc.c (compare_symbols): Put section syms first.
(sym_exists_at): New function.
(ppc64_elf_get_synthetic_symtab): Use relocs to find code entry
points only for relocatable files. Use .opd section contents
otherwise. Generally clean up the code.
LI_R12_0, STVX_VR0_R12_R0, LVX_VR0_R12_R0, MTLR_R0, SFPR_MAX): Define.
(struct sfpr_def_parms): New.
(sfpr_define): New function.
(savegpr0, savegpr0_tail, restgpr0, restgpr0_tail): New functions.
(savegpr1, savegpr1_tail, restgpr1, restgpr1_tail): New functions.
(savefpr, savefpr0_tail, restfpr, restfpr0_tail): New functions.
(savefpr1_tail, restfpr1_tail): New functions.
(savevr, savevr_tail, restvr, restvr_tail): New functions.
(MIN_SAVE_FPR, MAX_SAVE_FPR): Don't define.
(ppc64_elf_func_desc_adjust): Use sfpr_define in place of existing
code. Define all ABI mandated _save and _rest functions.
* elflink.c (bfd_elf_record_link_assignment): Add comment about
changing bfd_link_hash_undefined to bfd_link_hash_new.
* ldexp.c (fold_name): Don't call bfd_link_add_undef if the symbol
was already on the undefs list.
* elfxx-target.h (bfd_elfNN_get_synthetic_symtab): Only define
if not yet defined.
* elf64-ppc.c (bfd_elf64_get_synthetic_symtab): Define.
(synthetic_opd, synthetic_relocatable): New variables.
(compare_symbols, compare_relocs): New helper routines.
(ppc64_elf_get_synthetic_symtab): New function.
* bfd.c (bfd_get_synthetic_symtab): Rename dynsyms argument
to relsyms.
* bfd-in2.h: Regenerated.
* elf.c (_bfd_elf_get_synthetic_symtab): Rename dynsyms argument
to relsyms. Return 0 if abfd is relocatable.
binutils/
* objdump.c (dump_bfd): For relocatable objects, pass syms instead
of dynsyms to bfd_get_synthetic_symtab.
matches the requirements for an ARM mapping symbol name.
(arm_elf_find_function): New function based on elf_find_function in elf.c but
skipping ARM mapping symbols and including thumb function symbols.
(elf32_arm_find_nearest_line): Use arm_elf_find_function.
(elf32_arm_output_symbol_hook): Use is_arm_mapping_symbol_name.