From a941619c0b0c871c0bf64844d4bc058ddc158e3f Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Sat, 1 Mar 1997 06:10:58 +0000 Subject: [PATCH] * config/tc-mips.c (mips16_extended_frag): Don't assume that we can rely on the frag address to determine whether a frag is earlier or later. --- gas/ChangeLog | 6 ++++++ gas/config/tc-mips.c | 17 +++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index adcd663589f..90cde168a9c 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +Sat Mar 1 01:04:04 1997 Ian Lance Taylor + + * config/tc-mips.c (mips16_extended_frag): Don't assume that we + can rely on the frag address to determine whether a frag is + earlier or later. + Fri Feb 28 14:40:00 1997 Ian Lance Taylor * write.h (LOCAL_LABEL): Only define if not BFD_ASSEMBLER. diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index 31b5d1f3528..5290f3b9d68 100644 --- a/gas/config/tc-mips.c +++ b/gas/config/tc-mips.c @@ -9787,12 +9787,16 @@ mips16_extended_frag (fragp, sec, stretch) { fragS *f; - /* Adjust stretch for any alignment frag. FIXME: This - doesn't handle the fr_subtype field, which specifies a - maximum number of bytes to skip when doing an alignment. */ - for (f = fragp; f != fragp->fr_symbol->sy_frag; f = f->fr_next) + /* Adjust stretch for any alignment frag. Note that if have + been expanding the earlier code, the symbol may be + defined in what appears to be an earlier frag. FIXME: + This doesn't handle the fr_subtype field, which specifies + a maximum number of bytes to skip when doing an + alignment. */ + for (f = fragp; + f != NULL && f != fragp->fr_symbol->sy_frag; + f = f->fr_next) { - assert (f != NULL); if (f->fr_type == rs_align || f->fr_type == rs_align_code) { if (stretch < 0) @@ -9804,7 +9808,8 @@ mips16_extended_frag (fragp, sec, stretch) break; } } - val += stretch; + if (f != NULL) + val += stretch; } addr = fragp->fr_address + fragp->fr_fix; -- 2.30.2