From: Nick Clifton Date: Tue, 3 Jul 2001 15:04:19 +0000 (+0000) Subject: Fix mips16 testsuite failure by allowing finalize_syms to be set before X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=875488164582218721d98a407d699f57862f63da;hp=d81420d2331395583e9b45f51b1bdfc8374dfc12;p=binutils-gdb.git Fix mips16 testsuite failure by allowing finalize_syms to be set before size_segs is called. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index c7c7890e3c4..2e69a81682d 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,13 @@ +2001-07-03 Nick Clifton + + * 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 * config/tc-ppc.c: Formatting fixes. diff --git a/gas/doc/internals.texi b/gas/doc/internals.texi index 3e3e507fe5b..1d2313a0d9e 100644 --- a/gas/doc/internals.texi +++ b/gas/doc/internals.texi @@ -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 diff --git a/gas/write.c b/gas/write.c index f17a6fa8e2a..4e1e06af01f 100644 --- a/gas/write.c +++ b/gas/write.c @@ -52,6 +52,10 @@ #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 ();