previously disabled for lack of such support. For *-*-linux*libc1 targets,
XFAIL a ld testsuite that fails due to a bug in the dynamic linker prior to
glibc-2.1.
* libpei.h (_bfd_pei_final_link_postscript): Declare.
(coff_final_link_postscript): Define.
* peigen.c (_bfd_pei_swap_aouthdr_out): Don't set value for data
directory entries here.
(_bfd_pei_final_link_postscript): New function.
* peicode.h (coff_swap_scnhdr_in): If COFF_IMAGE_WITH_PE, the
get the overflow of the s_nlnno field from the s_nreloc field.
* peigen.c (_bfd_pei_swap_scnhdr_out): If doing a final link, swap
the s_nlnno overflow of the .text section into the s_nreloc
field.
* config.bfd (i[3456]86-*-interix*): Set targ_cflags to
-DSTRICT_PE_FORMAT.
* coffcode.h (styp_to_sec_flags): Check STRICT_PE_FORMAT rather
than __INTERIX.
(coff_classify_symbol): Re-revert 1999-08-08 patch if
STRICT_PE_FORMAT.
* libpei.h: New file, broken out of peicode.h.
* peigen.c: New file, broken out of peicode.h.
* peicode.h: A bunch of code moved out to libpei.h and peigen.c.
* configure.in: Add peigen.lo to list of files required for each
PE target.
* Makefile.am: Rebuild dependencies.
(BFD32_BACKENDS): Add peigen.lo.
(BFD32_BACKENDS_CFILES): Add peigen.c.
(SOURCE_HFILES): Add libpei.h.
* configure, Makefile.in: Rebuild.
* peicode.h (coff_swap_scnhdr_in): Don't check for a special
section name of _BSS; check IMAGE_SCN_CNT_UNINITIALIZED_DATA
instead. Don't clear the s_paddr field for an uninitialized data
section.
* coffcode.h (coff_mkobject_hook): If COFF_WITH_PE, set HAS_DEBUG
to the reverse of IMAGE_FILE_DEBUG_STRIPPED.
(coff_write_object_contents): Set IMAGE_FILE_DEBUG_STRIPPED if
there is no SEC_DEBUGGING section.
* peicode.h (pe_mkobject_hook): Set HAS_DEBUG to the reverse of
IMAGE_FILE_DEBUG_STRIPPED.
* cofflink.c (_bfd_coff_link_input_bfd): When writing out a
symbol, switch on the class when determining whether to modify the
value. For PE, don't modify the value of a C_FCN symbol not named
.bf.
value for the stub address in a call through a stub.
Install the value for a local symbol directly into the DLT
instead of generating a reloc. Correctly handle FPTR64 relocs.
* elf-hppa.h (elf_hppa_final_link): Set the value of __gp to the
address of the .PARISC.global section.
(elf_hppa_relocate_section): Lookup and pass the PA64 hash
table entry elf_hppa_final_link_relocate. Do not give a warning
for a reloc against an external symbol if it has a PA64 hash
table entry.
(elf_hppa_final_link_relocate): Significantly rework. Handle
DLTIND relocations. Compute the final value of the relocation
before passing the value of elf_hppa_relocate_insn.
(elf_hppa_relocate_insn): Revamp to handle just bit tiwiddling
relocation support. Handle DLTIND relocation requests just like
DLTREL relocation requests. Simplify branch handling.
1999-09-08 Ulrich Drepper <drepper@cygnus.com>
* elf-hppa.h (elf_hppa_relocate_section): Catch problems with
non-allocated section as done in i386 version.
(elf_hppa_final_link_relocate): Uncomment R_PARISC_14F in switch
statement since this is no know relocation.
DLTREL21L relocs. Pass the output bfd to elf_hppa_relocate_insn.
Pass the relocate type rather than the insn format to
elf_hppa_relocate_insn.
(elf_hppa_relocate_insn): Make switch dependent on relocation type
rather than the opcode. Handle DLTREL21L and DLTREL14R relocs.
* coffcode.h (sort_by_secaddr): New static function if
COFF_IMAGE_WITH_PE.
(coff_compute_section_file_positions): If COFF_IMAGE_WITH_PE, sort
sections by VMA when assigning target_index values. Always set
virt_size.
* coffcode.h (coff_set_custom_section_alignment): Add const to
declaration to match definition.
(coff_write_object_contents): Don't set F_AR32W(R)? if
COFF_WITH_PE.
* coffcode.h (sec_to_styp_flags): Write separate COFF_WITH_PE
version. Move COFF_WITH_PE specific code to new version.
(stype_to_sec_flags): Likewise. Add section parameter.
* coffgen.c (make_a_section_from_file): Set target_index before
calling styp_to_sec_flags. Pass section to styp_to_sec_flags.
* libcoff.h: Rebuild.
* syms.c (stt): Add some PE/PEI section names.
(bfd_decode_symclass): Return 'w', not 'U', for a weak undefined
symbol.
(bfd_symbol_info): Check for 'w'.
* elflink.h (elf_adjust_dynamic_symbol): Copy REF_REGULAR_NONWEAK
and NON_GOT_REF from weak defined symbol to real symbol.
* elf32-i386.c (elf_i386_check_relocs): Set NON_GOT_REF.
(elf_i386_adjust_dynamic_symbol): If NON_GOT_REF is not set, don't
create a COPY reloc.
* elf32-sparc.c (elf32_sparc_check_relocs): Set NON_GOT_REF.
(elf32_sparc_adjust_dynamic_symbol): If NON_GOT_REF is not set,
don't create a COPY reloc.
* coff-i386.c (coff_i386_reloc): Handle R_IMAGEBASE.
(RTYPE2HOWTO): Return NULL if reloc type is out of range.
(coff_i386_rtype_to_howto): Likewise.
* coffcode.h (coff_slurp_symbol_table): Change a -2 to N_DEBUG.
Completely ignore symbols which are all zero.
(dummy_reloc16_estimate): Add return 0.
* cofflink.c (_bfd_coff_link_input_bfd): Rename inner scope
variable copy to name_copy to avoid shadowing outer scope
variable.
* libcoff-in.h (coff_data_type): Change raw_syment_count field
from unsigned int to unsigned long. Add timestamp field.
* libcoff.h: Rebuild.
Also comment changes.
for special section symbols.
* elflink.h (elf_merge_symbol): If we have no old BFD, check
BSF_DYNAMIC on the section symbol to see whether the old BFD is
dynamic.
elf-section data to allocate just the right amount of relocation
space. Don't allocate the hash space twice.
(elf_bfd_final_link): Calculate the amount of space to allocate in
each relocation section.
64bit mode, generate a section relative relocation for a 32bit
wide relocation.
(elf_hppa_is_local_label_name): New function.
* elf32-hppa.c (elf_hppa_is_local_label_name): Deleted. To be
shared between 32bit and 64bit port.
* elf64-sparc.c (sparc64_elf_relocate_section): Back out part of
the Sep. 4th, 1998 change. glibc 2.0.x dynamic linker had bug,
not binutils.
* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
* coffgen.c (coff_find_nearest_line): When looking for file, use
last best match rather than first. If address is beyond last line
number record, don't return the last line as the correct value.
the size of a GOT entry here.
(mips_elf_calculate_relocation): Don't create a local GOT entry
for the symbol in a GOT16 relocation; just for it's high-order bit
(_bfd_mips_elf_relocate_section): Fix thinko.
(mips_elf_next_lo16_relocation): Don't compute the addend here.
Just return the relocation found.
(mips_elf_relocate_section): Pull the LO16 addend out of the
section itself when using REL relocations.
value of a symbol in a SEC_DEBUGGING section. Warn when doing a
relocation against a symbol in an input section with no output
section. From Daniel Jacobowitz <drow@false.org>.
and R_MIPS16_26 relocations correctly when relocating.
(_bfd_mips_elf_check_relocs): Don't assume that R_MIPS_CALL_HI16
and R_MIPS_CALL_LO16 are for global symbols.
* elflink.h (elf_bfd_final_link): Copy the whole isym, not just
some fields.
* elf64-sparc.c (sparc64_elf_output_arch_syms): Declare used
variables and initialize them.
there are no global symbols requiring GOT entries.
(_bfd_mips_elf_size_dynamic_sections): Likewise.
(_bfd_mips_elf_finish_dynamic_symbol): Likewise.
(_bfd_mips_elf_finish_dynamic_sections): Likewise.
symbols are considered to have the value zero.
(_bfd_mips_elf_relocate_section): Don't try to perform a
relocation for an undefined symbol.
(_bfd_mips_elf_check_relocs): Allocate locate GOT space for local
GOT16 relocations.
* elf64-sparc.c (sparc64_elf_build_plt): Cosmetic change - ABI
wants ba,a,pt %xcc instead of %icc.
Emit correct .PLT0-(.PLTN+4) initial value into the pointer slots
of large PLT entries.
(sparc64_elf_plt_ptr_offset): Fix calculation.
(sparc64_elf_finish_dynamic_symbol): Negative value of R_SPARC_JMP_SLOT
addend should be relative to load address, not .plt section start.
(sparc64_elf_size_info): Sparc64 uses 32bit .hash entries.
* elf-bfd.h (struct elf_backend_data): Add
print_symbol_all and output_arch_syms backend methods.
* elfxx-target.h: Likewise.
* elf64-sparc.c (sparc64_elf_bfd_link_hash_table_create,
sparc64_elf_add_symbol_hook, sparc64_elf_output_arch_syms,
sparc64_elf_get_symbol_type, sparc64_elf_symbol_processing): New
functions.
(sparc64_elf_size_dynamic_sections): Leave space for STT_REGISTER
symbols in .dynsym, add their names into .dynstr. Put those symbols
into dynlocal.
(sparc64_elf_finish_dynamic_sections): Fix up DT_SPARC_REGISTER
pointers to STT_REGISTER symbols in dynsym section.
(sparc64_elf_print_symbol_all): New function.
* elf.c (bfd_elf_print_symbol): Allow special backend symbol
printing using the print_symbol_all hook.
* coffcode.h (styp_to_sec_flags): If COFF_LONG_SECTION_NAMES and
COFF_SUPPORT_GNU_LINKONCE, mark sections whose names begin with
.gnu.linkonce with SEC_LINKONCE and SEC_LINK_DUPLICATES_DISCARD.
* coff-go32.c: (COFF_LONG_SECTION_NAMES): Define.
(COFF_SUPPORT_GNU_LINKONCE): Define.
* coff-stgo32.c: (COFF_LONG_SECTION_NAMES): Define.
(COFF_SUPPORT_GNU_LINKONCE): Define.