* xcofflink.c (_bfd_ppc_xcoff_relocate_section): Check explicitly
authorIan Lance Taylor <ian@airs.com>
Wed, 12 Jun 1996 22:05:32 +0000 (22:05 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 12 Jun 1996 22:05:32 +0000 (22:05 +0000)
for _ptrgl, and treat it as global linkage code.
PR 9860.

bfd/ChangeLog
bfd/xcofflink.c

index a5482d45e954d6a980adb169ea2d5ca2b8d6d187..4832a0f5d4f325d72e2f1e3b655511c69938d1c3 100644 (file)
@@ -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.
index 88a7f3462ab5b8f063aeebaeaeccdded0a741acf..1ff4df09509348a4de086114b82533c394a834b4 100644 (file)
@@ -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 */