diff options
author | Alan Modra <amodra@gmail.com> | 2007-02-17 07:20:56 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2007-02-17 07:20:56 +0000 |
commit | b4b24b7937424e5ef89febf6b541248dc9f015be (patch) | |
tree | a9ec960b7698d17b3edd32c3c0db68195399ecc8 /gas/write.c | |
parent | 3669427c8eaf2004867e9594cc865a77575d1fbe (diff) | |
download | gdb-b4b24b7937424e5ef89febf6b541248dc9f015be.zip gdb-b4b24b7937424e5ef89febf6b541248dc9f015be.tar.gz gdb-b4b24b7937424e5ef89febf6b541248dc9f015be.tar.bz2 |
* write.c: White space fixes.
(fixup_segment): Move symbol_mri_common_p adjustments..
(write_relocs): ..and symbol_equated_reloc_p adjustments..
(adjust_reloc_syms): ..to here.
Diffstat (limited to 'gas/write.c')
-rw-r--r-- | gas/write.c | 89 |
1 files changed, 24 insertions, 65 deletions
diff --git a/gas/write.c b/gas/write.c index 1c93d43..07b9dd7 100644 --- a/gas/write.c +++ b/gas/write.c @@ -661,17 +661,21 @@ adjust_reloc_syms (bfd *abfd ATTRIBUTE_UNUSED, /* If this symbol is equated to an undefined or common symbol, convert the fixup to being against that symbol. */ - if (symbol_equated_reloc_p (sym) - || S_IS_WEAKREFR (sym)) + while (symbol_equated_reloc_p (sym) + || S_IS_WEAKREFR (sym)) { + symbolS *newsym = symbol_get_value_expression (sym)->X_add_symbol; + if (sym == newsym) + break; fixp->fx_offset += symbol_get_value_expression (sym)->X_add_number; - sym = symbol_get_value_expression (sym)->X_add_symbol; - fixp->fx_addsy = sym; + fixp->fx_addsy = newsym; + sym = newsym; } if (symbol_mri_common_p (sym)) { - /* These symbols are handled specially in fixup_segment. */ + fixp->fx_offset += S_GET_VALUE (sym); + fixp->fx_addsy = symbol_get_value_expression (sym)->X_add_symbol; continue; } @@ -700,14 +704,14 @@ adjust_reloc_syms (bfd *abfd ATTRIBUTE_UNUSED, if (bfd_is_abs_section (symsec)) { /* The fixup_segment routine normally will not use this - symbol in a relocation. */ + symbol in a relocation. */ continue; } /* Don't try to reduce relocs which refer to non-local symbols - in .linkonce sections. It can lead to confusion when a - debugging section refers to a .linkonce section. I hope - this will always be correct. */ + in .linkonce sections. It can lead to confusion when a + debugging section refers to a .linkonce section. I hope + this will always be correct. */ if (symsec != sec && ! S_IS_LOCAL (sym)) { if ((symsec->flags & SEC_LINK_ONCE) != 0 @@ -808,15 +812,6 @@ fixup_segment (fixS *fixP, segT this_segment) #endif add_number = fixP->fx_offset; - if (fixP->fx_addsy != NULL - && symbol_mri_common_p (fixP->fx_addsy)) - { - add_number += S_GET_VALUE (fixP->fx_addsy); - fixP->fx_offset = add_number; - fixP->fx_addsy - = symbol_get_value_expression (fixP->fx_addsy)->X_add_symbol; - } - if (fixP->fx_addsy != NULL) add_symbol_segment = S_GET_SEGMENT (fixP->fx_addsy); @@ -1030,24 +1025,6 @@ write_relocs (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED) continue; } - /* If this is an undefined symbol which was equated to another - symbol, then generate the reloc against the latter symbol - rather than the former. */ - sym = fixp->fx_addsy; - while (symbol_equated_reloc_p (sym)) - { - symbolS *n; - - /* We must avoid looping, as that can occur with a badly - written program. */ - n = symbol_get_value_expression (sym)->X_add_symbol; - if (n == sym) - break; - fixp->fx_offset += symbol_get_value_expression (sym)->X_add_number; - sym = n; - } - fixp->fx_addsy = sym; - reloc = tc_gen_reloc (sec, fixp); if (!reloc) { @@ -1103,24 +1080,6 @@ write_relocs (bfd *abfd, asection *sec, void *xxx ATTRIBUTE_UNUSED) continue; } - /* If this is an undefined symbol which was equated to another - symbol, then generate the reloc against the latter symbol - rather than the former. */ - sym = fixp->fx_addsy; - while (symbol_equated_reloc_p (sym)) - { - symbolS *n; - - /* We must avoid looping, as that can occur with a badly - written program. */ - n = symbol_get_value_expression (sym)->X_add_symbol; - if (n == sym) - break; - fixp->fx_offset += symbol_get_value_expression (sym)->X_add_number; - sym = n; - } - fixp->fx_addsy = sym; - reloc = tc_gen_reloc (sec, fixp); for (j = 0; reloc[j]; j++) @@ -1700,7 +1659,7 @@ write_object_file (void) resolve_symbol_value (symp); /* Skip symbols which were equated to undefined or common - symbols. */ + symbols. */ if (symbol_equated_reloc_p (symp) || S_IS_WEAKREFR (symp)) { @@ -2041,11 +2000,11 @@ relax_segment (struct frag *segment_frag_root, segT segment, int pass) depending upon the location of a symbol which is in turn moved by the growing frag. eg: - foo = . - .org foo+16 - foo = . + foo = . + .org foo+16 + foo = . - So we dictate that this algorithm can be at most O2. */ + So we dictate that this algorithm can be at most O2. */ max_iterations = frag_count * frag_count; /* Check for overflow. */ if (max_iterations < frag_count) @@ -2168,11 +2127,11 @@ relax_segment (struct frag *segment_frag_root, segT segment, int pass) if (symbolP) { - /* Convert from an actual address to an octet offset - into the section. Here it is assumed that the - section's VMA is zero, and can omit subtracting it - from the symbol's value to get the address offset. */ - know (S_GET_SEGMENT (symbolP)->vma == 0); + /* Convert from an actual address to an octet offset + into the section. Here it is assumed that the + section's VMA is zero, and can omit subtracting it + from the symbol's value to get the address offset. */ + know (S_GET_SEGMENT (symbolP)->vma == 0); target += S_GET_VALUE (symbolP) * OCTETS_PER_BYTE; } @@ -2208,7 +2167,7 @@ relax_segment (struct frag *segment_frag_root, segT segment, int pass) _("attempt to move .org backwards")); /* We've issued an error message. Change the - frag to avoid cascading errors. */ + frag to avoid cascading errors. */ fragP->fr_type = rs_align; fragP->fr_subtype = 0; fragP->fr_offset = 0; |