Don't update reloc count if there are any non pc-relative relocs
PR ld/16428 * elf32-i386.c (elf_i386_allocate_dynrelocs): Don't update reloc count if there are any non pc-relative relocs. * elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
This commit is contained in:
parent
8213266aea
commit
d1ec1e40b5
3 changed files with 21 additions and 4 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2014-01-14 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR ld/16428
|
||||||
|
* elf32-i386.c (elf_i386_allocate_dynrelocs): Don't update reloc
|
||||||
|
count if there are any non pc-relative relocs.
|
||||||
|
* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
|
||||||
|
|
||||||
2014-01-14 Michael Hudson-Doyle <michael.hudson@linaro.org>
|
2014-01-14 Michael Hudson-Doyle <michael.hudson@linaro.org>
|
||||||
Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
|
Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
|
||||||
|
|
||||||
|
|
|
@ -2368,8 +2368,13 @@ elf_i386_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
|
||||||
|
|
||||||
for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
|
for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
|
||||||
{
|
{
|
||||||
p->count -= p->pc_count;
|
/* Don't update reloc count if there are any non
|
||||||
p->pc_count = 0;
|
pc-relative relocs. */
|
||||||
|
if (!h->pointer_equality_needed)
|
||||||
|
{
|
||||||
|
p->count -= p->pc_count;
|
||||||
|
p->pc_count = 0;
|
||||||
|
}
|
||||||
if (p->count == 0)
|
if (p->count == 0)
|
||||||
*pp = p->next;
|
*pp = p->next;
|
||||||
else
|
else
|
||||||
|
|
|
@ -2463,8 +2463,13 @@ elf_x86_64_allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)
|
||||||
|
|
||||||
for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
|
for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
|
||||||
{
|
{
|
||||||
p->count -= p->pc_count;
|
/* Don't update reloc count if there are any non
|
||||||
p->pc_count = 0;
|
pc-relative relocs. */
|
||||||
|
if (!h->pointer_equality_needed)
|
||||||
|
{
|
||||||
|
p->count -= p->pc_count;
|
||||||
|
p->pc_count = 0;
|
||||||
|
}
|
||||||
if (p->count == 0)
|
if (p->count == 0)
|
||||||
*pp = p->next;
|
*pp = p->next;
|
||||||
else
|
else
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue