aboutsummaryrefslogtreecommitdiff
path: root/gas/write.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2001-05-22 10:23:50 +0000
committerAlan Modra <amodra@gmail.com>2001-05-22 10:23:50 +0000
commit6386f3a76709a4d55f17b30449280e1b3ed01ed9 (patch)
treed54b59808b66538a730f1e79a93186fdeafaf493 /gas/write.c
parentc801568a3aea2906c9134468c7389acab7f54763 (diff)
downloadbinutils-6386f3a76709a4d55f17b30449280e1b3ed01ed9.zip
binutils-6386f3a76709a4d55f17b30449280e1b3ed01ed9.tar.gz
binutils-6386f3a76709a4d55f17b30449280e1b3ed01ed9.tar.bz2
* symbols.c (resolve_symbol_value): Remove "finalize" param,
instead use finalize_syms directly. Don't treat expressions specially with regard to finalize_syms. Update calls to self. (resolve_local_symbol): Update call to resolve_symbol_value. (S_GET_VALUE): Likewise. Return resolve_symbol_value if !finalize_syms. * symbols.h (resolve_symbol_value): Update prototype. * config/obj-aout.c (obj_crawl_symbol_chain): Update call to resolve_symbol_value. * config/obj-bout.c (obj_crawl_symbol_chain): Likewise. * config/obj-coff.c (do_relocs_for): Likewise. (yank_symbols): Likewise. (fixup_segment): Likewise. * config/obj-vms.c (obj_crawl_symbol_chain): Likewise. * config/tc-mips.c (md_convert_frag): Likewise. * config/tc-ppc.c (ppc_frob_symbol): Likewise. (ppc_fix_adjustable): Likewise. * dwarf2dbg.c (dwarf2dbg_estimate_size_before_relax): Likewise. (dwarf2dbg_convert_frag): Likewise. * ehopt.c (eh_frame_estimate_size_before_relax): Likewise. (eh_frame_convert_frag): Likewise. * expr.c (make_expr_symbol): Likewise. * write.c (adjust_reloc_syms): Likewise. (write_object_file): Likewise. (relax_segment): Likewise. (fixup_segment): Likewise. (finalize_syms): Init to zero, and update comment. (write_object_file): Set finalize_syms to 1 rather than 2. * doc/internals.texi (sy_value): Mention finalize_syms. (S_GET_VALUE): Remove restriction on when S_GET_VALUE can be called.
Diffstat (limited to 'gas/write.c')
-rw-r--r--gas/write.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/gas/write.c b/gas/write.c
index 151f1cf..7e9317f 100644
--- a/gas/write.c
+++ b/gas/write.c
@@ -61,10 +61,8 @@ extern CONST int md_short_jump_size;
extern CONST int md_long_jump_size;
#endif
-/* Used to control final evaluation of expressions that are more
- complex than symbol + constant. 1 means set final value for simple
- expressions, 2 means set final value for more complex expressions. */
-int finalize_syms = 1;
+/* Used to control final evaluation of expressions. */
+int finalize_syms = 0;
int symbol_table_frozen;
void print_fixup PARAMS ((fixS *));
@@ -760,10 +758,10 @@ adjust_reloc_syms (abfd, sec, xxx)
symbols, though, since they are not in the regular symbol
table. */
if (sym != NULL)
- resolve_symbol_value (sym, finalize_syms);
+ resolve_symbol_value (sym);
if (fixp->fx_subsy != NULL)
- resolve_symbol_value (fixp->fx_subsy, finalize_syms);
+ resolve_symbol_value (fixp->fx_subsy);
/* If this symbol is equated to an undefined symbol, convert
the fixup to being against that symbol. */
@@ -1582,7 +1580,7 @@ write_object_file ()
#endif /* BFD_ASSEMBLER */
/* Relaxation has completed. Freeze all syms. */
- finalize_syms = 2;
+ finalize_syms = 1;
#if defined (BFD_ASSEMBLER) && defined (OBJ_COFF) && defined (TE_GO32)
/* Now that the segments have their final sizes, run through the
@@ -1902,7 +1900,7 @@ write_object_file ()
symbolS *symp;
for (symp = symbol_rootP; symp; symp = symbol_next (symp))
- resolve_symbol_value (symp, finalize_syms);
+ resolve_symbol_value (symp);
}
resolve_local_symbol_values ();
@@ -1950,7 +1948,7 @@ write_object_file ()
/* Do it again, because adjust_reloc_syms might introduce
more symbols. They'll probably only be section symbols,
but they'll still need to have the values computed. */
- resolve_symbol_value (symp, finalize_syms);
+ resolve_symbol_value (symp);
/* Skip symbols which were equated to undefined or common
symbols. */
@@ -2488,7 +2486,7 @@ relax_segment (segment_frag_root, segment)
valueT value;
int size;
- value = resolve_symbol_value (fragP->fr_symbol, 0);
+ value = resolve_symbol_value (fragP->fr_symbol);
size = sizeof_leb128 (value, fragP->fr_subtype);
growth = size - fragP->fr_offset;
fragP->fr_offset = size;
@@ -2611,7 +2609,7 @@ fixup_segment (fixP, this_segment_type)
if (sub_symbolP)
{
- resolve_symbol_value (sub_symbolP, finalize_syms);
+ resolve_symbol_value (sub_symbolP);
if (add_symbolP == NULL || add_symbol_segment == absolute_section)
{
if (add_symbolP != NULL)