Ensure syms are dynamic if we might be emitting a reloc.
(allocate_plt_and_got_and_discard_relocs): Don't discard relocs
for undefweak or undefined syms..
(elf_i386_relocate_section <R_386_32, R_386_PC32>): .. and emit.
* elf32-i386.c (elf_i386_relocate_section): Check the
ELF_LINK_HASH_DEF_DYNAMIC to see if a symbol is not defined
in the regular object file and treat the weak definition as
the normal one.
unresolved_reloc test to exclude cases where we use "relocation"
before setting it to point into the .got. Reinstate fudge for
unresolved relocs in debugging sections.
* elf32-i386.c (elf_i386_check_relocs): Tweak condition under
which .got created. Mark symbols used by R_386_32 and R_386_PC32
relocs as ELF_LINK_NON_GOT_REF to create COPY relocs only when the
reloc is in a read-only section. Instead, allocate space for a
dynamic reloc to reference the library symbol directly. Keep
track of space we allocate using pcrel_relocs_copied.
(discard_copies): Delete, and move code to ..
(allocate_plt_and_got): ..here. Rename to
allocate_plt_and_got_and_discard_relocs. Remove unneeded dynamic
relocs for non-shared link.
(elf_i386_size_dynamic_sections): Update calls to above functions.
(elf_i386_relocate_section): Write out the dynamic relocs. Add
more ugly logic to avoid "unresolvable relocation" error. Use
htab shortcut in place of elf_hash_table macro.
(elf_i386_finish_dynamic_sections): Allow that dynamic .got may
not always be created now.
discard_copies, and use elf_link_hash_entry arg rather than
elf_i386_link_hash_entry.
(elf_i386_link_hash_traverse): Delete.
(elf_i386_size_dynamic_sections): Adjust call to discard_copies.
Tidy sizing of dynamic sections.
(elf_i386_check_relocs <R_386_32, R_386_PC32>): Reference count
possible .plt entries.
(elf_i386_gc_sweep_hook): Likewise.
(elf_i386_adjust_dynamic_symbol): Discard .plt entries for
everything with plt.refcount <= 0.
* elf32-i386.c (elf_i386_check_relocs): Don't allocate .got and
.relgot space here.
(elf_i386_gc_sweep_hook): ..and no need to deallocate here..
(elf32_hppa_adjust_dynamic_symbol): ..and don't allocate .plt and
.rel.plt here..
(allocate_plt_and_got): ..instead do it all here. New function.
(elf_i386_size_dynamic_sections): Allocate local .got space and
call allocate_plt_and_got. No need to zap .relgot if not dynamic.
(bfd_elf32_bfd_final_link): Delete. (ie. use regular final link
rather than gc variety).
(WILL_CALL_FINISH_DYNAMIC_SYMBOL): Define.
(elf_i386_relocate_section): Use it here and correct handling of
R_386_GOT32. Provide section and offset for "unresolvable
relocation" error message.
(elf_i386_finish_dynamic_symbol): Correct handling of R_386_GOT32.
* elf32-i386.c (struct elf_i386_link_hash_table): Add sgot,
sgotplt, srelgot, splt, srelplt, sdynbss, srelbss fields.
(elf_i386_link_hash_table_create): Init them.
(create_got_section): New function.
(elf_i386_create_dynamic_sections): New function.
(elf_backend_create_dynamic_sections): Set to above.
(elf_i386_check_relocs): Use shortcuts from hash table rather than
calling bfd_get_section_by_name.
(elf_i386_gc_sweep_hook): Likewise.
(elf_i386_adjust_dynamic_symbol): Likewise.
(elf_i386_size_dynamic_sections): Likewise.
(elf_i386_relocate_section): Likewise.
(elf_i386_finish_dynamic_sections): Likewise.
* elf32-i386.c (elf_i386_check_relocs): Report files with bad
relocation section names.
(elf_i386_relocate_section): Report files with bad relocation
section names and return false.
* 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.
If it passed as non-NULL, use it to check whether any input BFD
has an input section which uses this output section. Change all
callers.
* bfd-in2.h: Rebuild.
* bfd-in.h: Move declarations of bfd_get_elf_phdr_upper_bound and
bfd_get_elf_phdrs in from bfd-in2.h, correcting patch of
1999-11-29.
* bfd-in2.h: Rebuild.
* 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.
as appropriate. Use EMPTY_HOWTO as appropriate. Fill in
structure initializations. Add casts.
* reloc.c (EMPTY_HOWTO): Define.
* bfd-in2.h: Rebuild.
* coff-h8300.c (h8300_reloc16_extra_cases): Remove useless
comparisons against 0.
* elf32-sparc.c (elf32_sparc_merge_private_bfd_data): Change
previous_ibfd_e_flags to unsigned long.
* vms.h (struct vms_private_data_struct): Change section_count to
unsigned.
* vms-gsd.c (_bfd_vms_slurp_gsd): Change psect_idx to unsigned.
(_bfd_vms_write_gsd): Change symnum to unsigned.
* vms-hdr.c (_bfd_vms_write_hdr): Change symnum to unsigned.
* vms-tir.c (etir_sta): Change psect to unsigned.
(alloc_section): Change idx to unsigned.
(tir_sta, tir_ctl): Change psect to unsigned.
(_bfd_vms_write_tir): Change len and before to bfd_size_type.
* vms.c (priv_section_count): Change to unsigned.
as appropriate. Fill in structure initializations. Add variable
initializations. Add casts.
* dwarf1.c (parse_line_table): Change eachLine to unsigned long.
(dwarf1_unit_find_nearest_line): Change i to unsigned long.