* symbols.c (resolve_symbol_value): Always set segment, even when
not finalizing symbol value.
This commit is contained in:
parent
1cd55018a6
commit
05bdb37eec
2 changed files with 14 additions and 11 deletions
|
@ -1,5 +1,8 @@
|
|||
2001-05-25 Alan Modra <amodra@one.net.au>
|
||||
|
||||
* symbols.c (resolve_symbol_value): Always set segment, even when
|
||||
not finalizing symbol value.
|
||||
|
||||
* config/obj-ieee.c (write_object_file): Set finalize_syms.
|
||||
* config/obj-coff.c (write_object_file): Likewise.
|
||||
* (size_section): Remove rs_space assert as fr_symbol is no longer
|
||||
|
|
|
@ -942,7 +942,7 @@ resolve_symbol_value (symp)
|
|||
{
|
||||
if (finalize_syms)
|
||||
{
|
||||
S_SET_SEGMENT (symp, S_GET_SEGMENT (add_symbol));
|
||||
final_seg = S_GET_SEGMENT (add_symbol);
|
||||
symp->sy_value.X_op = O_symbol;
|
||||
symp->sy_value.X_add_symbol = add_symbol;
|
||||
symp->sy_value.X_add_number = final_val;
|
||||
|
@ -1146,18 +1146,18 @@ resolve_symbol_value (symp)
|
|||
}
|
||||
|
||||
if (finalize_syms)
|
||||
{
|
||||
S_SET_VALUE (symp, final_val);
|
||||
|
||||
exit_dont_set_value:
|
||||
/* Always set the segment, even if not finalizing the value.
|
||||
The segment is used to determine whether a symbol is defined. */
|
||||
#if defined (OBJ_AOUT) && ! defined (BFD_ASSEMBLER)
|
||||
/* The old a.out backend does not handle S_SET_SEGMENT correctly
|
||||
for a stab symbol, so we use this bad hack. */
|
||||
if (final_seg != S_GET_SEGMENT (symp))
|
||||
#endif
|
||||
S_SET_SEGMENT (symp, final_seg);
|
||||
}
|
||||
|
||||
exit_dont_set_value:
|
||||
/* Don't worry if we can't resolve an expr_section symbol. */
|
||||
if (finalize_syms)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue