somewhat.
(mn10200_elf_relax_section): Correctly compute a symbol's value
when the symbol is local, but not in the same section as we are
relaxing. Implement abs24 -> abs16, imm24 -> imm16 and d24 -> d16
relaxing.
Another 1.3% size reduction for hello world. Only relaxing left todo is
imm16 -> imm8 and d16 -> d8 where applicable.
Store lower 16 bits of addend in R_M32R_HI16_[SU]LO insns.
Add small data area support (R_M32R_SDA16).
* reloc.c: Document BFD_RELOC_M32R_SDA16.
* bfd-in2.h,libbfd.h: Regenerated.
* reloc.c (BFD_RELOC_ALPHA_CODEADDR): New relocation for
openVMS/Alpha.
* evax.h (ALPHA_R_CODEADDR): New relocation.
* evax-alpha.c (ALPHA_R_CODEADDR): 64 bit procedure relocation for
openVMS/Alpha.
* evax-etir.c (ALPHA_R_CODEADDR): Output object code for this
relocation.
* bfd-in2.h, libbfd.h: Rebuild.
Restrict symbol length to 64 bytes, case preserving:
* evax-emh.c (_bfd_evax_write_emh): Remove case hacking.
* evax-misc.c (_bfd_evax_case_hack_symbol): Remove.
(_bfd_evax_length_hash_symbol): Added.
* evax-etir.c (_bfd_evax_write_etir): Call
_bfd_evax_length_hash_symbol before output of symbol.
* evax-egsd.c (_bfd_evax_write_egsd): Likewise.
* evax.h (flag_hash_long_names, flag_show_after_trunc): Remove.
* evax-emh.c: Output filename to object file without path.
* evax-egsd.c: New sections for local and global commons.
* evax-alpha.c, evax-emh.c, evax-egsd.c, evax-etir.c,
evax-misc.c, evax.h: Remove 8 bit characters from copyright
notices. Replace AXP with Alpha.
(struct mips_elf_link_hash_entry): Add new fields fn_stub,
need_fn_sub, call_stub, and call_fp_stub.
(struct mips_elf_link_hash_table): Add field mips16_stubs_seen.
(mips_elf_link_hash_newfunc): Initialize new fields.
(mips_elf_link_hash_table_create): Likewise.
(mips_elf_relocate_section): Redirect relocations to use mips16
stubs when appropriate.
(mips_elf_check_relocs): Attach stub sections to the appropriate
symbol. Set need_fn_stub when appropriate.
(mips_elf_always_size_sections): New static function.
(mips_elf_check_mips16_stubs): New static function.
(elf_backend_always_size_sections): Define.
* elf-bfd.h (struct elf_obj_tdata): Add local_stubs field.
relocateable link, just skip pc_relative pcrel_offset relocs.
* coff-arm.c (coff_arm_rtype_to_howto): Return a different howto
structure for an ARM26 reloc which can be resolved.
(coff_arm_adjust_symndx): Only convert ARM26 to ARM26D if the
reloc can be resolved.
PR 11599.
relocations against the text segment, look up the output name of
the reloc section.
* elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
* elf32-mips.c (mips_elf_size_dynamic_sections): Likewise.
* elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise.
* elf32-sparc.c (elf32_sparc_size_dynamic_sections): Likewise.
* elf64-alpha.c (elf64_alpha_size_dynamic_sections): Likewise.
Use bfd_elf_generic_reloc as special function for all relocs.
(bfd_elf32_mn10200_reloc): Remove unnecessary function.
Working on relocs for the mn10200.
* coff-tic80.c (tic80coff_vec): Data byte order is big endian and
header byte order is little endian. Use correct bfd_get and
bfd_put routines for little endian headers.
* coffcode.h (coff_set_arch_mach_hook): Set arch to
bfd_arch_tic80 for TIC80_ARCH_MAGIC number.
(ALL_MACHINES): Add cpu-tic80.o
(cpu-tic80.o, coff-tic80.o): Add dependencies.
* coff-tic80.c: Add skeleton, cloned from another coff config.
* coffcode.h (coff_write_object_contents): Set magic to TIC80MAGIC
for TIc80.
mips16 symbol during the link.
(mips_elf_finish_dynamic_symbol): Subtract 1 from the value of a
mips16 symbol.
(mips_elf_link_output_symbol_hook): New static function.
(elf_backend_link_output_symbol_hook): Define.
symbol if the real definition is in the dynamic symbol table.
After finding the real definition, then, if it is dynamic, add the
weak symbol to the dynamic symbol table.
PR 11244.
even if SEC_ALLOC is not set.
* elf32-i386.c (elf_i386_check_relocs): Don't check SEC_ALLOC
when deciding whether to copy a reloc into a shared object.
(elf_i386_relocate_section): Likewise.
* elf32-sparc.c (elf32_sparc_check_relocs): Likewise.
(elf32_sparc_relocate_section): Likewise.
* elf32-i386.c (elf_i386_check_relocs): Don't set SEC_ALLOC in a
reloc section if it is not set in the source section.
* elf32-sparc.c (elf32_sparc_check_relocs): Likewise.
* elf.c (bfd_section_from_shdr): Mark a reloc section associated
with a SEC_DEBUGGING section as SEC_DEBUGGING.
PR 11174.
mn10300-Info_howto_rel. Tweak reloc argument to be an
Elf32_Internal_Rela.
(USE_RELA): Define instead of USE_REL.
(elf_info_to_howto, elf_info_howto_rel): Corresponding changes.
* elf.c (_bfd_elf_link_hash_newfunc): Initialize other field.
(swap_out_syms): Set st_other from existing st_other field.
* elflink.h (elf_link_add_object_symbols): Store st_other in hash
table other field.
(elf_link_output_extsym): Set the other field from the global hash
table entry.
* elf32-mips.c (enum reloc_type): Add R_MIPS16_26.
(elf_mips16_jump_howto): New static variable.
(mips16_jump_reloc): New static function.
(bfd_elf32_bfd_reloc_type_lookup): Handle BFD_RELOC_MIPS16_JMP.
(mips_info_to_howto_rel): Handle R_MIPS16_26.
(mips_elf_relocate_section): Handle R_MIPS16_26. Handle R_MIPS_26
to a mips16 symbol.
* reloc.c (BFD_RELOC_MIPS16_JMP): Add to list of relocs.
* bfd-in2.h, libbfd.h: Rebuild.
* cpu-mips.c (arch_info_struct): Add mips:16 entry.
(enum reloc_type): Add more reloc types.
(elf32_mn10300_howto_table): Update for new reloc types.
(elf32_mn10300_reloc_map): Update for new reloc types.
* reloc.c: Add some new relocs for the mn10300 series.
* bfd-in2.h, libbfd.h: Rebuilt.
Last week's reloc work.
(sunos_link_hash_table_create): Initialize got_needed.
(sunos_create_dynamic_sections): Only set .got section size if it
is not already set. Set got_needed.
(bfd_sunos_size_dynamic_sections): Check got_needed. Only set
sdynptr, and only handle dynamic sections, if dynamic sections are
needed.
(sunos_scan_std_relocs): Pass false to create_dynamic_sections.
Initialize .got section.
(sunos_scan_ext_relocs): Likewise.
(sunos_write_dynamic_symbol): Set up PLT entry even if this is not
a dynamic symbol.
(sunos_finish_dynamic_link): Check got_needed. Only set up
dynamic linking information if needed.
PR 11074.
Store import file index in ldindx.
(xcoff_build_ldsyms): Assume that ldsym was not previously
allocated. For an imported symbol, copy ldindx into l_ifile.
R_V850_ZDAOFFSET and R_V850_TDAOFFSET. Fix various
fields in R_V850_TDAOFFSET.
(elf32_v850_bfd_final_link_relocate): Tweak pc-relative
relocs to work more like other relocs. Handle R_V850_TDAOFF
relocations.
v850 tda, sda & zda stuff.
(bfd_elf32_v850_reloc): Return an error if we get a reloc
we can't handle.
(elf32_v850_bfd_final_link_relocate): New function.
(v850_elf_relocation_section): Likewise.
(elf_backend_relocate_section): Define.
New-style linker for the v850 (necessary to handle zda, sda & tda).
sda & tda relocs seem to be working. No tda reloc support yet.
all sections that will be included in the output file.
(_bfd_generic_link_output_symbols): Discard symbols in sections
which are being discarded.
Fixes 4 failures in the g++ testsuite on the v850.
* reloc.c: Create a new BFD_RELOC_ALPHA_ELF_LITERAL. It was a
mistake to have reused the ECOFF LITERAL for ELF since they have
different semantics.
* elf64-alpha.c (elf_reloc_map): Map from ELF_LITERAL.
* bfd-in2.h, libbfd.h: Rebuild.
* elf64-alpha.c (elf64_alpha_size_dynamic_sections): Trap .got
section overflow.
* elf64-alpha.c (elf64_alpha_relocate_section): Do not emit a
dynamic relocation for an undefweak symbol when we are building
a static executable.
(sunos_link_hash_table_create): Initialize got_base.
(bfd_sunos_size_dynamic_sections): If the .got section is more
than 0x1000 bytes, set __GLOBAL_OFFSET_TABLE_ and got_base to
0x1000.
(sunos_check_dynamic_reloc): Subtract got_base from a base
relative relocation.
PR 10684.
(m68kcoff_rtype_to_howto): New static function.
* cf-m68klynx.c (coff_m68k_lynx_rtype_to_howto): Add the section
VMA to the addend for a PC relative reloc.
* mpw-config.in: Likewise.
* configure: Rebuild.
* targmatch.sed: New file; a sed script to build targmatch.h from
config.bfd.
* config.bfd: Add #if, #endif, and comments for targmatch.h.
* targets.c: Include "fnmatch.h".
(struct targmatch): Define.
(bfd_target_match): Define by including targmatch.h.
(bfd_find_target): If the target is not found by name, search for
it as a configuration triplet.
* Makefile.in: Rebuild dependencies.
(BFD32_BACKENDS): Add aout-arm.o, aout-sparcle.o, hp300bsd.o,
i386dynix.o, m68k4knetbsd.o, and riscix.o.
(BFD32_BACKENDS_CFILES): Add aout-arm.c, aout-sparcle.c,
hp300bsd.c, i386dynix.c, m68k4knetbsd.c, and riscix.c.
(HFILES): Add targmatch.h. Also, alphabetize and reindent.
(CFILES): Remove i386dynix.c and hp300bsd.c.
(targmatch.h): New target.
(do_clean): Remove targmatch.h.
* configure.in: Add BFD_NEED_DECLARATION(getenv).
* acconfig.h: Add NEED_DECLARATION_GETENV.
* configure, config.in: Rebuild.
* sysdep.h: If NEED_DECLARATION_GETENV, declare getenv.
* aout-adobe.c (aout_adobe_object_p): Don't declare getenv.
openVMS/Alpha: Provide filename and case_hack flags via
symbol table from gas.
Add case_hack code for symbol output from vax/vms.
* evax-alpha.c (evax_initialize): Remove filename handling,
filename is provided via symbol table.
(evax_get_symtab): Use local symbol count when setting up table.
* evax-egsd.c (_bfd_evax_slurp_egsd): Print correct name when
debugging.
(_bfd_evax_write_egsd): Skip file name symbol.
* evax-emh.c (get_vms_time_string): Local function now.
(_bfd_evax_write_emh): Extract source filename and case_hack flags
from symbol table.
* evax_write_etir (_bfd_evax_write_etir): Pass all symbol names
through _bfd_evax_case_hack_symbol.
* evax-misc.c (hash_string, _bfd_evax_case_hack_symbol): New
functions.
(_bfd_evax_basename): Removed.
(_bfd_get_vms_time_string): Moved to evax-emh.c.
* evax.h (evax_private_data_struct): Remove filename.
(flag_hash_long_names, flag_show_after_trunc,
flag_no_hash_mixed_case, vms_name_mapping): New flags for
vms_case_hack.
link, adjust the symbol index of a base relative reloc. Don't
change the addend of a PC relative reloc if pcrel_offset is set.
* sunos.c (bfd_sunos_size_dynamic_sections): Don't do anything for
a relocateable link.
PR 10692.