aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>1996-06-12 22:05:32 +0000
committerIan Lance Taylor <ian@airs.com>1996-06-12 22:05:32 +0000
commit49144784121822b6ff5e7c64ea72960ce6fa7faf (patch)
tree9fe9161d8e7960e42c96a1d841856e9f4ab3ec81
parent77dd44697f51b4e836f6102f1e5e92b0a58f981c (diff)
downloadgdb-49144784121822b6ff5e7c64ea72960ce6fa7faf.zip
gdb-49144784121822b6ff5e7c64ea72960ce6fa7faf.tar.gz
gdb-49144784121822b6ff5e7c64ea72960ce6fa7faf.tar.bz2
* xcofflink.c (_bfd_ppc_xcoff_relocate_section): Check explicitly
for _ptrgl, and treat it as global linkage code. PR 9860.
-rw-r--r--bfd/ChangeLog3
-rw-r--r--bfd/xcofflink.c6
2 files changed, 8 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index a5482d4..4832a0f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,8 @@
Wed Jun 12 11:16:37 1996 Ian Lance Taylor <ian@cygnus.com>
+ * xcofflink.c (_bfd_ppc_xcoff_relocate_section): Check explicitly
+ for _ptrgl, and treat it as global linkage code.
+
* aoutx.h (NAME(aout,find_nearest_line)): Notice if we find a
filename or N_SO symbol past the offset, and use it to indicate
that there is no line number or function when appropriate.
diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
index 88a7f34..1ff4df0 100644
--- a/bfd/xcofflink.c
+++ b/bfd/xcofflink.c
@@ -6215,7 +6215,11 @@ _bfd_ppc_xcoff_relocate_section (output_bfd, info, input_bfd,
pnext = contents + (rel->r_vaddr - input_section->vma) + 4;
next = bfd_get_32 (input_bfd, pnext);
- if (h->smclas == XMC_GL)
+
+ /* The _ptrgl function is magic. It is used by the AIX
+ compiler to call a function through a pointer. */
+ if (h->smclas == XMC_GL
+ || strcmp (h->root.root.string, "._ptrgl") == 0)
{
if (next == 0x4def7b82 /* cror 15,15,15 */
|| next == 0x4ffffb82) /* cror 31,31,31 */