PATCH: PR ld/10433: Latest ld fails to link ldconfig properly
H.J. Lu
hjl.tools@gmail.com
Mon Aug 3 15:52:00 GMT 2009
On Mon, Aug 3, 2009 at 7:35 AM, Alan Modra<amodra@bigpond.net.au> wrote:
> On Thu, Jul 30, 2009 at 09:05:04PM -0700, H.J. Lu wrote:
>> PR ld/10433
>> * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Also set
>> plt.offset to -1 when discarding space for dynamic
>> relocations.
>>
>> Index: bfd/elf-ifunc.c
>> ===================================================================
>> --- bfd/elf-ifunc.c (revision 6507)
>> +++ bfd/elf-ifunc.c (working copy)
>> @@ -193,6 +193,7 @@ _bfd_elf_allocate_ifunc_dyn_relocs (stru
>> || h->got.refcount > 0)
>> abort ();
>> h->got.offset = (bfd_vma) -1;
>> + h->plt.offset = (bfd_vma) -1;
>> *head = NULL;
>> return TRUE;
>> }
>
> These should probably be
>
> h->got = htab->init_got_offset;
> h->plt = htab->init_plt_offset;
>
> OK with that change.
>
This is what I checked in.
Thanks.
--
H.J.
--
2009-08-03 H.J. Lu <hongjiu.lu@intel.com>
PR ld/10433
* elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Set got
to htab->init_got_offset and plt to htab->init_plt_offset
when discarding space for dynamic relocations.
Index: elf-ifunc.c
===================================================================
--- elf-ifunc.c (revision 6507)
+++ elf-ifunc.c (working copy)
@@ -185,6 +185,8 @@ _bfd_elf_allocate_ifunc_dyn_relocs (stru
return FALSE;
}
+ htab = elf_hash_table (info);
+
/* Return and discard space for dynamic relocations against it if
it is never referenced in a non-shared object. */
if (!h->ref_regular)
@@ -192,7 +194,8 @@ _bfd_elf_allocate_ifunc_dyn_relocs (stru
if (h->plt.refcount > 0
|| h->got.refcount > 0)
abort ();
- h->got.offset = (bfd_vma) -1;
+ h->got = htab->init_got_offset;
+ h->plt = htab->init_plt_offset;
*head = NULL;
return TRUE;
}
@@ -203,8 +206,6 @@ _bfd_elf_allocate_ifunc_dyn_relocs (stru
else
sizeof_reloc = bed->s->sizeof_rel;
- htab = elf_hash_table (info);
-
/* When building a static executable, use .iplt, .igot.plt and
.rel[a].iplt sections for STT_GNU_IFUNC symbols. */
if (htab->splt != NULL)
More information about the Binutils
mailing list