aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Newton <willnewton@sourceware.org>2013-05-07 17:03:52 +0000
committerWill Newton <willnewton@sourceware.org>2013-05-07 17:03:52 +0000
commit7b70956dc8e3886e5fa483d72847f68a5008346c (patch)
tree5904235f3e00cf31d0a4ad508bcfd68bee1ad50a
parent1ee9e8b3d23a202aac82a524353c4ec3366477c7 (diff)
downloadgdb-7b70956dc8e3886e5fa483d72847f68a5008346c.zip
gdb-7b70956dc8e3886e5fa483d72847f68a5008346c.tar.gz
gdb-7b70956dc8e3886e5fa483d72847f68a5008346c.tar.bz2
bfd/elf-ifunc.c: Add header size arg to _bfd_elf_allocate_ifunc_dyn_relocs.
bfd/ChangeLog: 2013-05-07 Will Newton <will.newton@linaro.org> * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Add a plt_header_size argument for ports where it differs from plt_entry_size. * elf-bfd.h: Likewise. * elf32-i386.c: Pass plt_header_size to _bfd_elf_allocate_ifunc_dyn_relocs. * elf64-x86-64.c: Likewise.
-rw-r--r--bfd/ChangeLog10
-rw-r--r--bfd/elf-bfd.h2
-rw-r--r--bfd/elf-ifunc.c3
-rw-r--r--bfd/elf32-i386.c3
-rw-r--r--bfd/elf64-x86-64.c1
5 files changed, 16 insertions, 3 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 5e24d2e..a670a24 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,15 @@
2013-05-07 Will Newton <will.newton@linaro.org>
+ * elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Add a
+ plt_header_size argument for ports where it differs from
+ plt_entry_size.
+ * elf-bfd.h: Likewise.
+ * elf32-i386.c: Pass plt_header_size to
+ _bfd_elf_allocate_ifunc_dyn_relocs.
+ * elf64-x86-64.c: Likewise.
+
+2013-05-07 Will Newton <will.newton@linaro.org>
+
* elf-ifunc.c (_bfd_elf_create_ifunc_dyn_reloc): Remove unused
function.
* elf-bfd.h: Likewise.
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index d1a7e26..4a67d02 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -2380,7 +2380,7 @@ extern bfd_boolean _bfd_elf_create_ifunc_sections
(bfd *, struct bfd_link_info *);
extern bfd_boolean _bfd_elf_allocate_ifunc_dyn_relocs
(struct bfd_link_info *, struct elf_link_hash_entry *,
- struct elf_dyn_relocs **, unsigned int, unsigned int);
+ struct elf_dyn_relocs **, unsigned int, unsigned int, unsigned int);
extern void elf_append_rela (bfd *, asection *, Elf_Internal_Rela *);
extern void elf_append_rel (bfd *, asection *, Elf_Internal_Rela *);
diff --git a/bfd/elf-ifunc.c b/bfd/elf-ifunc.c
index ea08329..8d48e66 100644
--- a/bfd/elf-ifunc.c
+++ b/bfd/elf-ifunc.c
@@ -112,6 +112,7 @@ _bfd_elf_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
struct elf_link_hash_entry *h,
struct elf_dyn_relocs **head,
unsigned int plt_entry_size,
+ unsigned int plt_header_size,
unsigned int got_entry_size)
{
asection *plt, *gotplt, *relplt;
@@ -193,7 +194,7 @@ keep:
/* If this is the first .plt entry, make room for the special
first entry. */
if (plt->size == 0)
- plt->size += plt_entry_size;
+ plt->size += plt_header_size;
}
else
{
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index 2609130..cc8b48e 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -2197,7 +2197,8 @@ elf_i386_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
if (h->type == STT_GNU_IFUNC
&& h->def_regular)
return _bfd_elf_allocate_ifunc_dyn_relocs (info, h, &eh->dyn_relocs,
- plt_entry_size, 4);
+ plt_entry_size,
+ plt_entry_size, 4);
else if (htab->elf.dynamic_sections_created
&& h->plt.refcount > 0)
{
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 9adc959..758231e 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -2260,6 +2260,7 @@ elf_x86_64_allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)
return _bfd_elf_allocate_ifunc_dyn_relocs (info, h,
&eh->dyn_relocs,
plt_entry_size,
+ plt_entry_size,
GOT_ENTRY_SIZE);
else if (htab->elf.dynamic_sections_created
&& h->plt.refcount > 0)