* config/tc-ppc.c (md_apply_fix): For PPC_TOC16 on XCOFF, uses offset
authorTristan Gingold <gingold@adacore.com>
Wed, 7 Nov 2007 14:10:49 +0000 (14:10 +0000)
committerTristan Gingold <gingold@adacore.com>
Wed, 7 Nov 2007 14:10:49 +0000 (14:10 +0000)
  within the TOC instead of the VMA.

* gas/ppc/test1xcoff32.d: Updated to match RTOC bug fix.

gas/ChangeLog
gas/config/tc-ppc.c
gas/testsuite/ChangeLog
gas/testsuite/gas/ppc/test1xcoff32.d

index 2050971..51c6fba 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-07  Tristan Gingold  <gingold@adacore.com>
+
+        * config/tc-ppc.c (md_apply_fix): For PPC_TOC16 on XCOFF, uses offset
+        within the TOC instead of the VMA.
+
 2007-11-06  Paul Brook  <paul@codesourcery.com>
 
        * config/tc-arm.c (do_mull): Allow overlapping Rm for armv6.
index 2a59847..1679c7e 100644 (file)
@@ -6059,10 +6059,11 @@ md_apply_fix (fixS *fixP, valueT *valP, segT seg ATTRIBUTE_UNUSED)
 #ifdef TE_PE
       fixP->fx_addnumber = 0;
 #else
-      /* We want to use the offset within the data segment of the
-        symbol, not the actual VMA of the symbol.  */
+      /* We want to use the offset within the toc, not the actual VMA
+        of the symbol.  */
       fixP->fx_addnumber =
-       - bfd_get_section_vma (stdoutput, S_GET_SEGMENT (fixP->fx_addsy));
+       - bfd_get_section_vma (stdoutput, S_GET_SEGMENT (fixP->fx_addsy))
+       - S_GET_VALUE (ppc_toc_csect);
 #endif
     }
 #endif
index 44b608f..d69e30c 100644 (file)
@@ -1,3 +1,7 @@
+2007-11-07  Tristan Gingold  <gingold@adacore.com>
+
+        * gas/ppc/test1xcoff32.d: Updated to match RTOC bug fix.
+
 2007-11-06  Paul Brook  <paul@codesourcery.com>
 
        * gas/arm/mul-overlap.s: Add umull and smlal.
index 7e7a7a7..56de4d4 100644 (file)
@@ -76,17 +76,17 @@ Disassembly of section \.text:
   24:  80 63 00 08     l       r3,8\(r3\)
 
 0+0028 <reference_via_toc>:
-  28:  80 62 00 0c     l       r3,12\(r2\)
+  28:  80 62 00 00     l       r3,0\(r2\)
                        2a: R_TOC       ignored0\+0xf+ff8c
-  2c:  80 62 00 10     l       r3,16\(r2\)
+  2c:  80 62 00 04     l       r3,4\(r2\)
                        2e: R_TOC       ignored1\+0xf+ff88
-  30:  80 62 00 14     l       r3,20\(r2\)
+  30:  80 62 00 08     l       r3,8\(r2\)
                        32: R_TOC       ignored2\+0xf+ff84
-  34:  80 62 00 18     l       r3,24\(r2\)
+  34:  80 62 00 0c     l       r3,12\(r2\)
                        36: R_TOC       ignored3\+0xf+ff80
-  38:  80 62 00 1c     l       r3,28\(r2\)
+  38:  80 62 00 10     l       r3,16\(r2\)
                        3a: R_TOC       ignored4\+0xf+ff7c
-  3c:  80 62 00 20     l       r3,32\(r2\)
+  3c:  80 62 00 14     l       r3,20\(r2\)
                        3e: R_TOC       ignored5\+0xf+ff78
 
 0+0040 <subtract_symbols>:
@@ -101,7 +101,7 @@ Disassembly of section \.text:
 0+005c <load_addresses>:
   5c:  38 60 00 00     lil     r3,0
   60:  38 60 00 04     lil     r3,4
-  64:  38 62 00 24     cal     r3,36\(r2\)
+  64:  38 62 00 18     cal     r3,24\(r2\)
                        66: R_TOC       ignored6\+0xf+ff74
 Disassembly of section \.data: