R_SH_COPY, R_SH_GLOB_DAT, R_SH_JMP_SLOT, R_SH_RELATIVE,
R_SH_GOTOFF, R_SH_GOTPC) to the range from 160 to 167. Replaced
the original entries with EMPTY_HOWTOs, and added new ones to fill
in the gap.
(sh_elf_info_to_howto): Make sure the new gap isn't used.
(sh_elf_relocate_section): Likewise.
pseduo-section when determining where the TOC ends.
* coff-rs6000.c (_bfd_xcoff_swap_aux_out): Use bfd_h_put_16 to
output x_tvndx as it is only two bytes wide.
* coff-rs6000.c (xcoff_howto_table): A modifiable branch-absolute
reloc is 26 or 32 bits wide.
* coff-rs6000.c (_bfd_xcoff_rtype2howto): The bitsize is irrelevant
for relocs that don't change anything. Also look at the full
6 bits of bitsize.
* reloc.c (BFD_RELOC_SH_COPY, BFD_RELOC_SH_GLOB_DAT,
BFD_RELOC_SH_JMP_SLOT, BFD_RELOC_SH_RELATIVE,
BFD_RELOC_SH_GOTPC): Move them from the MIPS section to the SH
section.
* elf-bfd.h (elf_link_hash_table): Add runpath.
* bfd-in.h (bfd_elf_get_runpath_list): New prototype.
* bfd-in2.h: Rebuilt.
* elf.c (_bfd_elf_link_hash_table_init): Initialize the
"runpath" field to NULL.
(bfd_elf_get_runpath_list): New function.
* elflink.h (elf_link_add_object_symbols): Record DT_RPATH and
DT_RUNPATH entries.
bfd:
* elf32-i860.c (elf32_i860_relocate_pc16): Just write the immediate
field with the newly relocated value instead of adding it to the
existing immediate field.
(elf32_i860_relocate_splitn): Likewise.
(elf32_i860_relocate_highadj): Likewise.
gas:
* config/tc-i860.c (md_apply_fix3): Do not insert the immediate
if the fixup resulted in a relocation.
for undefined symbols to be the beginning of the section.
* elf64-sparc.c (sparc64_elf_adjust_dynamic_symbol): Don't allocate
four extra entries at the beginning of the .rela.plt section.
(sparc64_elf_finish_dynamic_symbol): Adjust the offset in the .rela.plt
section to account for the four reserved entries in the .plt section.
to the list of NOPs we recognize after a branch-and-link.
Use the ori NOP when one is needed.
* coff-rs6000.c (_bfd_xcoff_slurp_armap): Finish implementation
for large archives.
bfd/
2000-08-14 Jim Wilson <wilson@cygnus.com>
* elf64-ia64.c (elf64_ia64_merge_private_bfd_data): Handle
EF_IA_64_REDUCEDFP, EF_IA_64_CONS_GP, and EF_IA_64_NOFUNCDESC_CONS_GP.
(elf64_ia64_print_private_bfd_data): Likewise. Also handle
EF_IA_64_ABSOLUTE.
gas/
2000-08-14 Jim Wilson <wilson@cygnus.com>
* config/tc-ia64.c (md_longopts): Add -mconstant-gp and -mauto-pic.
(md_parse_option): Add OPTION_MCONSTANT_GP and OPTION_MAUTO_PIC.
(md_begin): Change assignment to md.flag to OR in the new bit.
include/elf/
2000-08-14 Jim Wilson <wilson@cygnus.com>
* elf/ia64.h (EF_IA_64_REDUCEDFP, EF_IA_64_CONS_GP,
EF_IA_64_NOFUNCDESC_CONS_GP, EF_IA_64_ABSOLUTE): Define.
* elf32-i860.c (elf32_i860_relocate_section): New function.
(i860_final_link_relocate): New function.
(elf32_i860_relocate_splitn): New function.
(elf32_i860_relocate_pc16): New function.
(elf32_i860_relocate_highadj): New function.
(elf32_i860_howto): Minor adjustments to some relocations.
(elf_info_to_howto_rel): Define.
(elf_backend_relocate_section): Define.
2000-08-08 Jason Eckhardt <jle@cygnus.com>
* config/tc-i860.h: Rework completely for BFD_ASSEMBLER.
(i860_fix_info): New enum.
(MD_APPLY_FIX3): Define.
(WORKING_DOT_WORD): Define.
(TC_HANDLES_FX_DONE): Define.
(DIFF_EXPR_OK): Define.
(LISTING_HEADER): Define.
(TARGET_FORMAT): Select target format based on endian flag.
(TARGET_BYTES_BIG_ENDIAN): Default to little endian.
(target_big_endian): Add external declaration.
* config/tc-i860.c: All existing code reworked completely. Other
new code shown below.
(SYNTAX_SVR4): Define.
(target_warn_expand): New variable.
(md_shortopts): Declare and define (-Qy, -Qn, and -V options).
(md_longopts): Declare and define with new options (-EL, -EB,
and -mwarn-expand).
(md_show_usage): New function.
(md_operand): New function.
(obtain_reloc_for_imm16): New function.
(md_apply_fix3): New function.
(tc_gen_reloc): New function.
include:
2000-08-08 Jason Eckhardt <jle@cygnus.com>
* opcode/i860.h: Small formatting adjustments.
opcode:
2000-08-08 Jason Eckhardt <jle@cygnus.com>
* i860-dis.c (print_br_address): Change third argument from int
to long.
bfd:
2000-08-08 Jason Eckhardt <jle@cygnus.com>
* elf32-i860.c (elf32_i860_howto_table): Updated some fields.
* elf32-i860 (elf32_i860_howto_table): New structure.
(lookup_howto): New function.
(elf32_i860_reloc_type_lookup): New function.
(elf32_i860_info_to_howto_rela): New function.
(elf_code_to_howto_index): New structure.
(elf_info_to_howto): Re-define as elf32_i860_info_to_howto_rela.
(bfd_elf32_bfd_reloc_type_lookup): Re-define as
elf32_i860_reloc_type_lookup.
* section.c: Back out the change made by Nick Clifton
<nickc@cygnus.com> on 2000-07-31. It breaks stripping dynamic
binaries.
* bfd-in2.h: Likewise.
* elf.c: Likewise.
* cpu-i860.c: Added comments.
* elf32-i860.c (TARGET_LITTLE_SYM): Defined to
bfd_elf32_i860_little_vec.
(TARGET_LITTLE_NAME): Defined to "elf32-i860-little".
(ELF_MAXPAGESIZE): Changed to 4096.
* targets.c (bfd_elf32_i860_little_vec): Declaration of
new target.
(bfd_target_vector): Added bfd_elf32_i860_little_vec.
* config.bfd (i860-stardent-sysv4*, i860-stardent-elf*): Added
config for little endian elf32 i860.
(targ_defvec): Define for the new config above
as "bfd_elf32_i860_little_vec".
(targ_selvecs): Define for the new config above
as "bfd_elf32_i860_vec bfd_elf32_i860_little_vec"
* configure.in (bfd_elf32_i860_little_vec): Added recognition
of new target vec.
* configure: Regenerated.
* elflink.h (elf_merge_symbol): Take one more argument,
dt_needed, to indicate if the symbol comes from a DT_NEEDED
entry. Don't overide the existing weak definition if dt_needed
is true.
(elf_link_add_object_symbols): Pass dt_needed to
elf_merge_symbol ().
(xcoff_write_armap_big): Write both 32-bit and 64-bit armaps.
(xcoff_write_archive_contents_big): Don't update the offset
of the symbol table, xcoff_write_armap will do it.
* elflink.h (NAME(bfd_elf,size_dynamic_sections)): Don't check
info->new_dtags when setting DT_FLAGS_1. It will only be set
by the new linker options. It shouldn't break anything.
* elf32-arm.h (elf32_arm_size_dynamic_sections): Also set
DF_TEXTREL if DT_TEXTREL is set.
* elf32-i370.c (i370_elf_size_dynamic_sections): Likewise.
* elf32-i386.c (elf_i386_size_dynamic_sections): Likewise.
* elf32-m68k.c (elf_m68k_size_dynamic_sections): Likewise.
* elf32-mips.c (_bfd_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.
* elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise.
* elf64-ia64.c (elf64_ia64_size_dynamic_sections): Likewise.
* elf64-sparc.c (sparc64_elf_size_dynamic_sections): Likewise.
* bfd/elflink.h (NAME(bfd_elf,size_dynamic_sections)): Also
set DF_SYMBOLIC for symbolic link. Also set DT_RUNPATH if
DT_RPATH is set.
Set the DT_FLAGS and DT_FLAGS_1 entries if necessary.
* bfd-in.h (bfd_elf_set_dt_needed_soname): New.
* bfd-in2.h: Rebuild.
* elf-bfd.h (elf_obj_tdata): Add dt_soname.
(elf_dt_soname): New.
* elf.c (bfd_elf_set_dt_needed_soname): New.
* elflink.h (elf_link_add_object_symbols): Add the DT_NEEDED
entry if the shared object loaded by DT_NEEDED is used to
resolve the reference in a regular object.