* elf32-i386.c (allocate_dynrelocs): Use SYMBOL_CALLS_LOCAL.
(elf_i386_relocate_section): Likewise. * elf32-ppc.c (allocate_dynrelocs): Likewise. (ppc_elf_relocate_section): Likewise. * elf64-ppc.c (allocate_dynrelocs): Likewise. (ppc64_elf_relocate_section): Likewise.
This commit is contained in:
parent
40f62fa0b5
commit
09695f5689
4 changed files with 34 additions and 6 deletions
|
@ -1,3 +1,13 @@
|
|||
2003-05-15 Alan Modra <amodra@bigpond.net.au>
|
||||
H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* elf32-i386.c (allocate_dynrelocs): Use SYMBOL_CALLS_LOCAL.
|
||||
(elf_i386_relocate_section): Likewise.
|
||||
* elf32-ppc.c (allocate_dynrelocs): Likewise.
|
||||
(ppc_elf_relocate_section): Likewise.
|
||||
* elf64-ppc.c (allocate_dynrelocs): Likewise.
|
||||
(ppc64_elf_relocate_section): Likewise.
|
||||
|
||||
2003-05-15 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
|
||||
|
||||
* elf32-mips.c (gprel32_with_gp): Remove useless N64 ABI case.
|
||||
|
|
|
@ -1679,7 +1679,13 @@ allocate_dynrelocs (h, inf)
|
|||
|
||||
if (info->shared)
|
||||
{
|
||||
if (SYMBOL_REFERENCES_LOCAL (info, h))
|
||||
/* The only reloc that uses pc_count is R_386_PC32, which will
|
||||
appear on a call or on something like ".long foo - .". We
|
||||
want calls to protected symbols to resolve directly to the
|
||||
function rather than going via the plt. If people want
|
||||
function pointer comparisons to work as expected then they
|
||||
should avoid writing assembly like ".long foo - .". */
|
||||
if (SYMBOL_CALLS_LOCAL (info, h))
|
||||
{
|
||||
struct elf_i386_dyn_relocs **pp;
|
||||
|
||||
|
@ -2434,7 +2440,7 @@ elf_i386_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||
|| h->root.type != bfd_link_hash_undefweak)
|
||||
&& (r_type != R_386_PC32
|
||||
|| (h != NULL
|
||||
&& !SYMBOL_REFERENCES_LOCAL (info, h))))
|
||||
&& !SYMBOL_CALLS_LOCAL (info, h))))
|
||||
|| (ELIMINATE_COPY_RELOCS
|
||||
&& !info->shared
|
||||
&& h != NULL
|
||||
|
|
|
@ -2799,7 +2799,13 @@ allocate_dynrelocs (h, inf)
|
|||
|
||||
if (info->shared)
|
||||
{
|
||||
if (SYMBOL_REFERENCES_LOCAL (info, h))
|
||||
/* Relocs that use pc_count are those that appear on a call
|
||||
insn, or certain REL relocs (see MUST_BE_DYN_RELOC) that can
|
||||
generated via assembly. We want calls to protected symbols
|
||||
to resolve directly to the function rather than going via the
|
||||
plt. If people want function pointer comparisons to work as
|
||||
expected then they should avoid writing weird assembly. */
|
||||
if (SYMBOL_CALLS_LOCAL (info, h))
|
||||
{
|
||||
struct ppc_elf_dyn_relocs **pp;
|
||||
|
||||
|
@ -4991,7 +4997,7 @@ ppc_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||
|| h->root.type != bfd_link_hash_undefweak)
|
||||
&& (MUST_BE_DYN_RELOC (r_type)
|
||||
|| (h != NULL
|
||||
&& !SYMBOL_REFERENCES_LOCAL (info, h))))
|
||||
&& !SYMBOL_CALLS_LOCAL (info, h))))
|
||||
|| (ELIMINATE_COPY_RELOCS
|
||||
&& !info->shared
|
||||
&& (input_section->flags & SEC_ALLOC) != 0
|
||||
|
|
|
@ -5621,7 +5621,13 @@ allocate_dynrelocs (h, inf)
|
|||
|
||||
if (info->shared)
|
||||
{
|
||||
if (SYMBOL_REFERENCES_LOCAL (info, h))
|
||||
/* Relocs that use pc_count are those that appear on a call
|
||||
insn, or certain REL relocs (see MUST_BE_DYN_RELOC) that can
|
||||
generated via assembly. We want calls to protected symbols
|
||||
to resolve directly to the function rather than going via the
|
||||
plt. If people want function pointer comparisons to work as
|
||||
expected then they should avoid writing weird assembly. */
|
||||
if (SYMBOL_CALLS_LOCAL (info, h))
|
||||
{
|
||||
struct ppc_dyn_relocs **pp;
|
||||
|
||||
|
@ -7874,7 +7880,7 @@ ppc64_elf_relocate_section (output_bfd, info, input_bfd, input_section,
|
|||
|| h->root.type != bfd_link_hash_undefweak)
|
||||
&& (MUST_BE_DYN_RELOC (r_type)
|
||||
|| (h != NULL
|
||||
&& !SYMBOL_REFERENCES_LOCAL (info, h))))
|
||||
&& !SYMBOL_CALLS_LOCAL (info, h))))
|
||||
|| (ELIMINATE_COPY_RELOCS
|
||||
&& !info->shared
|
||||
&& h != NULL
|
||||
|
|
Loading…
Reference in a new issue