From 731c08b7154c166f77ac85da9af136b015ace10c Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 30 Mar 2001 07:07:11 +0000 Subject: [PATCH] Pass finalize_syms on calls to resolve_symbol_value. --- gas/ChangeLog | 12 ++++++++++++ gas/config/obj-aout.c | 4 ++-- gas/config/obj-bout.c | 4 ++-- gas/config/obj-coff.c | 8 ++++---- gas/config/obj-vms.c | 4 ++-- gas/config/tc-mips.c | 2 +- gas/config/tc-ppc.c | 18 ++++++++++-------- gas/dwarf2dbg.c | 2 +- gas/ehopt.c | 2 +- gas/expr.c | 2 +- 10 files changed, 36 insertions(+), 22 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 05bc995366..0f1529be6b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,6 +1,18 @@ 2001-03-30 Alan Modra * dwarf2dbg.c (dwarf2_directive_file): Fix warnings. + (dwarf2dbg_convert_frag): Pass `finalize_syms' to resolve_symbol_value. + * config/obj-aout.c (obj_crawl_symbol_chain): Likewise. + * config/obj-bout.c (obj_crawl_symbol_chain): Likewise. + * config/obj-coff.c (do_relocs_for): Likewise. + (yank_symbols): Likewise. + (fixup_segment): Likewise. + * config/tc-ppc.c (ppc_frob_symbol): Likewise. + (ppc_fix_adjustable): Likewise. + * config/tc-mips.c (md_convert_frag): Likewise. + * config/obj-vms.c (obj_crawl_symbol_chain): Likewise. + * ehopt.c (eh_frame_convert_frag): Likewise. + * expr.c (make_expr_symbol): Likewise. * frags.h (struct frag): Add last_fr_address. Reorder fields for better packing. diff --git a/gas/config/obj-aout.c b/gas/config/obj-aout.c index 1b1e021de0..4bd323ea25 100644 --- a/gas/config/obj-aout.c +++ b/gas/config/obj-aout.c @@ -1,5 +1,5 @@ /* a.out object file format - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000 + Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -466,7 +466,7 @@ obj_crawl_symbol_chain (headers) S_SET_SEGMENT (symbolP, SEG_TEXT); } /* if pusing data into text */ - resolve_symbol_value (symbolP, 1); + resolve_symbol_value (symbolP, finalize_syms); /* Skip symbols which were equated to undefined or common symbols. */ diff --git a/gas/config/obj-bout.c b/gas/config/obj-bout.c index 2043e782ab..22ff671c52 100644 --- a/gas/config/obj-bout.c +++ b/gas/config/obj-bout.c @@ -1,5 +1,5 @@ /* b.out object file format - Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1996, 2000 + Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1996, 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -260,7 +260,7 @@ obj_crawl_symbol_chain (headers) S_SET_SEGMENT (symbolP, SEG_TEXT); } /* if pusing data into text */ - resolve_symbol_value (symbolP, 1); + resolve_symbol_value (symbolP, finalize_syms); /* Skip symbols which were equated to undefined or common symbols. */ diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c index 48056776b7..2527fefb35 100644 --- a/gas/config/obj-coff.c +++ b/gas/config/obj-coff.c @@ -1972,7 +1972,7 @@ do_relocs_for (abfd, h, file_cursor) /* Turn the segment of the symbol into an offset. */ if (symbol_ptr) { - resolve_symbol_value (symbol_ptr, 1); + resolve_symbol_value (symbol_ptr, finalize_syms); if (! symbol_ptr->sy_resolved) { char *file; @@ -2953,7 +2953,7 @@ yank_symbols () S_SET_SEGMENT (symbolP, SEG_E0); } /* push data into text */ - resolve_symbol_value (symbolP, 1); + resolve_symbol_value (symbolP, finalize_syms); if (S_GET_STORAGE_CLASS (symbolP) == C_NULL) { @@ -4185,7 +4185,7 @@ fixup_segment (segP, this_segment_type) /* Make sure the symbols have been resolved; this may not have happened if these are expression symbols. */ if (add_symbolP != NULL && ! add_symbolP->sy_resolved) - resolve_symbol_value (add_symbolP, 1); + resolve_symbol_value (add_symbolP, finalize_syms); if (add_symbolP != NULL) { @@ -4215,7 +4215,7 @@ fixup_segment (segP, this_segment_type) } if (sub_symbolP != NULL && ! sub_symbolP->sy_resolved) - resolve_symbol_value (sub_symbolP, 1); + resolve_symbol_value (sub_symbolP, finalize_syms); if (add_symbolP != NULL && add_symbolP->sy_mri_common) diff --git a/gas/config/obj-vms.c b/gas/config/obj-vms.c index e411e6c67d..028e6b9924 100644 --- a/gas/config/obj-vms.c +++ b/gas/config/obj-vms.c @@ -1,5 +1,5 @@ /* vms.c -- Write out a VAX/VMS object file - Copyright 1987, 1988, 1992, 1993, 1994, 1995, 1997, 1998, 2000 + Copyright 1987, 1988, 1992, 1993, 1994, 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. This file is part of GAS, the GNU Assembler. @@ -532,7 +532,7 @@ obj_crawl_symbol_chain (headers) symbolPP = &symbol_rootP; /* -> last symbol chain link. */ while ((symbolP = *symbolPP) != NULL) { - resolve_symbol_value (symbolP, 1); + resolve_symbol_value (symbolP, finalize_syms); /* OK, here is how we decide which symbols go out into the brave new symtab. Symbols that do are: diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 671515f192..72a1478df4 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -11353,7 +11353,7 @@ md_convert_frag (abfd, asec, fragp) ext = false; } - resolve_symbol_value (fragp->fr_symbol, 1); + resolve_symbol_value (fragp->fr_symbol, finalize_syms); val = S_GET_VALUE (fragp->fr_symbol); if (op->pcrel) { diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index c71c4c4c25..d1f61e7cd3 100644 --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -4221,7 +4221,7 @@ ppc_frob_symbol (sym) ppc_last_function = sym; if (symbol_get_tc (sym)->size != (symbolS *) NULL) { - resolve_symbol_value (symbol_get_tc (sym)->size, 1); + resolve_symbol_value (symbol_get_tc (sym)->size, finalize_syms); SA_SET_SYM_FSIZE (sym, (long) S_GET_VALUE (symbol_get_tc (sym)->size)); } @@ -4281,7 +4281,7 @@ ppc_frob_symbol (sym) - S_GET_VALUE (sym)); else { - resolve_symbol_value (symbol_get_tc (sym)->next, 1); + resolve_symbol_value (symbol_get_tc (sym)->next, finalize_syms); a->x_csect.x_scnlen.l = (S_GET_VALUE (symbol_get_tc (sym)->next) - S_GET_VALUE (sym)); } @@ -4334,7 +4334,7 @@ ppc_frob_symbol (sym) } else { - resolve_symbol_value (next, 1); + resolve_symbol_value (next, finalize_syms); a->x_csect.x_scnlen.l = (S_GET_VALUE (next) - S_GET_VALUE (sym)); } @@ -4365,7 +4365,8 @@ ppc_frob_symbol (sym) { while (symbol_get_tc (csect)->next != (symbolS *) NULL) { - resolve_symbol_value (symbol_get_tc (csect)->next, 1); + resolve_symbol_value (symbol_get_tc (csect)->next, + finalize_syms); if (S_GET_VALUE (symbol_get_tc (csect)->next) > S_GET_VALUE (sym)) break; @@ -4411,7 +4412,7 @@ ppc_frob_symbol (sym) /* The value is the offset from the enclosing csect. */ block = symbol_get_tc (sym)->within; csect = symbol_get_tc (block)->within; - resolve_symbol_value (csect, 1); + resolve_symbol_value (csect, finalize_syms); S_SET_VALUE (sym, S_GET_VALUE (sym) - S_GET_VALUE (csect)); } else if (S_GET_STORAGE_CLASS (sym) == C_BINCL @@ -4628,7 +4629,7 @@ ppc_fix_adjustable (fix) { valueT val; - resolve_symbol_value (fix->fx_addsy, 1); + resolve_symbol_value (fix->fx_addsy, finalize_syms); val = S_GET_VALUE (fix->fx_addsy); if (ppc_toc_csect != (symbolS *) NULL && fix->fx_addsy != (symbolS *) NULL @@ -4648,7 +4649,7 @@ ppc_fix_adjustable (fix) continue; if (symbol_get_tc (sy)->class != XMC_TC) break; - resolve_symbol_value (sy, 1); + resolve_symbol_value (sy, finalize_syms); if (val == S_GET_VALUE (sy)) { fix->fx_addsy = sy; @@ -4732,7 +4733,8 @@ ppc_fix_adjustable (fix) && S_GET_SEGMENT (fix->fx_addsy) == bss_section && ! S_IS_EXTERNAL (fix->fx_addsy)) { - resolve_symbol_value (symbol_get_frag (fix->fx_addsy)->fr_symbol, 1); + resolve_symbol_value (symbol_get_frag (fix->fx_addsy)->fr_symbol, + finalize_syms); fix->fx_offset += (S_GET_VALUE (fix->fx_addsy) - S_GET_VALUE (symbol_get_frag (fix->fx_addsy)->fr_symbol)); diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c index 87075423a7..f902b15396 100644 --- a/gas/dwarf2dbg.c +++ b/gas/dwarf2dbg.c @@ -806,7 +806,7 @@ dwarf2dbg_convert_frag (frag) { offsetT addr_diff; - addr_diff = resolve_symbol_value (frag->fr_symbol, 1); + addr_diff = resolve_symbol_value (frag->fr_symbol, finalize_syms); /* fr_var carries the max_chars that we created the fragment with. fr_subtype carries the current expected length. We must, of diff --git a/gas/ehopt.c b/gas/ehopt.c index 2a669ce2b9..75ad67ce93 100644 --- a/gas/ehopt.c +++ b/gas/ehopt.c @@ -457,7 +457,7 @@ eh_frame_convert_frag (frag) loc4_frag = (fragS *) frag->fr_opcode; loc4_fix = (int) frag->fr_offset; - diff = resolve_symbol_value (frag->fr_symbol, 1); + diff = resolve_symbol_value (frag->fr_symbol, finalize_syms); if (frag->fr_subtype == 0) { diff --git a/gas/expr.c b/gas/expr.c index 3b49ac73d8..8ddc965c7a 100644 --- a/gas/expr.c +++ b/gas/expr.c @@ -105,7 +105,7 @@ make_expr_symbol (expressionP) symbol_set_value_expression (symbolP, expressionP); if (expressionP->X_op == O_constant) - resolve_symbol_value (symbolP, 1); + resolve_symbol_value (symbolP, finalize_syms); n = (struct expr_symbol_line *) xmalloc (sizeof *n); n->sym = symbolP; -- 2.11.0