aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2008-12-11 10:14:40 +0000
committerAlan Modra <amodra@gmail.com>2008-12-11 10:14:40 +0000
commitdf131623294b8a9f8ebfbd0fe3780886c19527aa (patch)
tree97ef5d698721ebb83bbd671acc9e91f14eaa8410
parentd01190f9e3150aa4d6104e505272072043210f64 (diff)
downloadgdb-df131623294b8a9f8ebfbd0fe3780886c19527aa.zip
gdb-df131623294b8a9f8ebfbd0fe3780886c19527aa.tar.gz
gdb-df131623294b8a9f8ebfbd0fe3780886c19527aa.tar.bz2
PR 7041
* elf64-ppc.c (func_desc_adjust): Correct logic making fake function descriptors. Similarly correct making function descriptors dynamic.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf64-ppc.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 704a418..9bb846d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2008-12-11 Alan Modra <amodra@bigpond.net.au>
+
+ PR 7041
+ * elf64-ppc.c (func_desc_adjust): Correct logic making fake function
+ descriptors. Similarly correct making function descriptors dynamic.
+
2008-12-10 Alan Modra <amodra@bigpond.net.au>
* elf32-spu.h (struct spu_elf_params): Add num_regions.
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index c4be65a..02a8632 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -5815,7 +5815,7 @@ func_desc_adjust (struct elf_link_hash_entry *h, void *inf)
fdh = (struct ppc_link_hash_entry *) fdh->elf.root.u.i.link;
if (fdh == NULL
- && info->shared
+ && !info->executable
&& (fh->elf.root.type == bfd_link_hash_undefined
|| fh->elf.root.type == bfd_link_hash_undefweak))
{
@@ -5848,7 +5848,7 @@ func_desc_adjust (struct elf_link_hash_entry *h, void *inf)
if (fdh != NULL
&& !fdh->elf.forced_local
- && (info->shared
+ && (!info->executable
|| fdh->elf.def_dynamic
|| fdh->elf.ref_dynamic
|| (fdh->elf.root.type == bfd_link_hash_undefweak