Fix mips16 testsuite failure by allowing finalize_syms to be set before

size_segs is called.
This commit is contained in:
Nick Clifton 2001-07-03 15:04:19 +00:00
parent d81420d233
commit 8754881645
3 changed files with 34 additions and 3 deletions

View 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.

View 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

View File

@ -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 ();