Fix mips16 testsuite failure by allowing finalize_syms to be set before
authorNick Clifton <nickc@redhat.com>
Tue, 3 Jul 2001 15:04:19 +0000 (15:04 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 3 Jul 2001 15:04:19 +0000 (15:04 +0000)
size_segs is called.

gas/ChangeLog
gas/doc/internals.texi
gas/write.c

index c7c7890e3c400b9c8190820b5c8c123404843b47..2e69a81682d5b43456cdbee251a724adfc5b4559 100644 (file)
@@ -1,3 +1,13 @@
+2001-07-03  Nick Clifton  <nickc@cambridge.redhat.com>
+
+       * write.c (TC_FINALIZE_SYMS_BEFORE_SIZE_SEG): Default to 1.
+        (write_object_file): Set finalize_syms to
+        TC_FINALIZE_SYMS_BEFORE_SIZE_SEG just before size_segs is
+        called.
+
+        * doc/internals.texi; Document
+       TC_FINALIZE_SYMS_BEFORE_SIZE_SEG. 
+
 2001-07-02  Alan Modra  <amodra@bigpond.net.au>
 
        * config/tc-ppc.c: Formatting fixes.
index 3e3e507fe5b41d39320cabb3dabc846c3f3134da..1d2313a0d9e70b43de50e42b8644f2d3ba68171c 100644 (file)
@@ -1224,6 +1224,17 @@ The instruction is completed using the data from the relaxation pass.
 It may also create any necessary relocations.
 @xref{Relaxation}.
 
+@item TC_FINALIZE_SYMS_BEFORE_SIZE_SEG
+@cindex TC_FINALIZE_SYMS_BEFORE_SIZE_SEG
+Specifies the value to be assigned to @code{finalize_syms} before the function
+@code{size_segs} is called.  Since @code{size_segs} calls @code{cvt_frag_to_fill}
+which can call @code{md_convert_frag}, this constant governs whether the symbols 
+accessed in @code{md_convert_frag} will be fully resolved.  In particular it
+governs whether local symbols will have been resolved, and had their frag
+information removed.  Depending upon the processing performed by
+@code{md_convert_frag} the frag information may or may not be necessary, as may
+the resolved values of the symbols.  The default value is 1.
+
 @item md_apply_fix
 @cindex md_apply_fix
 GAS will call this for each fixup.  It should store the correct value in the
index f17a6fa8e2a3ef6b9aee38664b77ab380b1e170f..4e1e06af01f8b5f6dac0c831e488cd4412c1cb08 100644 (file)
 #define TC_FIX_ADJUSTABLE(fix) 1
 #endif
 
+#ifndef TC_FINALIZE_SYMS_BEFORE_SIZE_SEG
+#define TC_FINALIZE_SYMS_BEFORE_SIZE_SEG 1
+#endif
+
 #ifndef        MD_PCREL_FROM_SECTION
 #define MD_PCREL_FROM_SECTION(FIXP, SEC) md_pcrel_from(FIXP)
 #endif
@@ -1575,9 +1579,15 @@ write_object_file ()
        break;
     }
 
-  /* Note - we do not set finalize_syms here because some targets
-     do not finish sizing all of their frags until after size_seg
-     has completed.  */
+  /* Note - Most ports will use the default value of
+     TC_FINALIZE_SYMS_BEFORE_SIZE_SEG, which 1.  This will force
+     local symbols to be resolved, removing their frag information.
+     Some ports however, will not have finished relaxing all of
+     their frags and will still need the local symbol frag
+     information.  These ports can set
+     TC_FINALIZE_SYMS_BEFORE_SIZE_SEG to 0.  */
+  finalize_syms = TC_FINALIZE_SYMS_BEFORE_SIZE_SEG;
+
   bfd_map_over_sections (stdoutput, size_seg, (char *) 0);
 #else
   relax_and_size_all_segments ();