Avoid creating COPY relocs if possible.
authorAlan Modra <amodra@gmail.com>
Sat, 23 Jun 2001 05:54:15 +0000 (05:54 +0000)
committerAlan Modra <amodra@gmail.com>
Sat, 23 Jun 2001 05:54:15 +0000 (05:54 +0000)
commit12d0ee4aca6285a5f459434761b3f7577caae138
tree5f96c0e6fa65baf74d02e22bfa2dfae215e146e5
parentb4127474dc299137263682431108e1a021d6dbb4
Avoid creating COPY relocs if possible.
* 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.
bfd/ChangeLog
bfd/elf32-i386.c