aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-mcore.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2001-04-05 04:21:36 +0000
committerAlan Modra <amodra@gmail.com>2001-04-05 04:21:36 +0000
commite66457fbf3726420435dc962c190c8ab9933a78b (patch)
tree92ccaae4770d3076aeb5aa781ac93a0f8f34ff59 /gas/config/tc-mcore.c
parent608506ed674285b7c6dc61e0bdbe9e8c473c0e7b (diff)
downloadfsf-binutils-gdb-e66457fbf3726420435dc962c190c8ab9933a78b.zip
fsf-binutils-gdb-e66457fbf3726420435dc962c190c8ab9933a78b.tar.gz
fsf-binutils-gdb-e66457fbf3726420435dc962c190c8ab9933a78b.tar.bz2
Fix more breakages from the multiple relax pass patch.
Diffstat (limited to 'gas/config/tc-mcore.c')
-rw-r--r--gas/config/tc-mcore.c43
1 files changed, 22 insertions, 21 deletions
diff --git a/gas/config/tc-mcore.c b/gas/config/tc-mcore.c
index 3238e66..15c9ce6 100644
--- a/gas/config/tc-mcore.c
+++ b/gas/config/tc-mcore.c
@@ -111,20 +111,24 @@ cpu_type;
cpu_type cpu = M340;
/* Initialize the relax table. */
-const relax_typeS md_relax_table[] =
-{
-{ 1, 1, 0, 0 }, /* 0: unused */
-{ 1, 1, 0, 0 }, /* 1: unused */
-{ 1, 1, 0, 0 }, /* 2: unused */
-{ 1, 1, 0, 0 }, /* 3: unused */
-{ 1, 1, 0, 0 }, /* 4: unused */
-{ 2048, -2046, C12_LEN, C(COND_JUMP, DISP32) }, /* 5: C(COND_JUMP, DISP12) */
-{ 0, 0, C32_LEN, 0 }, /* 6: C(COND_JUMP, DISP32) */
-{ 1, 1, 0, 0 }, /* 7: unused */
-{ 1, 1, 0, 0 }, /* 8: unused */
-{ 2048, -2046, U12_LEN, C(UNCD_JUMP, DISP32) }, /* 9: C(UNCD_JUMP, DISP12) */
-{ 0, 0, U32_LEN, 0 }, /*10: C(UNCD_JUMP, DISP32) */
-{ 1, 1, 0, 0 }, /*11: unused */
+const relax_typeS md_relax_table[] = {
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+ { 0, 0, 0, 0 },
+
+ /* COND_JUMP */
+ { 0, 0, 0, 0 }, /* UNDEF_DISP */
+ { 2048, -2046, C12_LEN, C(COND_JUMP, DISP32) }, /* DISP12 */
+ { 0, 0, C32_LEN, 0 }, /* DISP32 */
+ { 0, 0, C32_LEN, 0 }, /* UNDEF_WORD_DISP */
+
+ /* UNCD_JUMP */
+ { 0, 0, 0, 0 }, /* UNDEF_DISP */
+ { 2048, -2046, U12_LEN, C(UNCD_JUMP, DISP32) }, /* DISP12 */
+ { 0, 0, U32_LEN, 0 }, /* DISP32 */
+ { 0, 0, U32_LEN, 0 } /* UNDEF_WORD_DISP */
+
};
/* Literal pool data structures. */
@@ -2251,17 +2255,14 @@ md_estimate_size_before_relax (fragP, segment_type)
if (!fragP->fr_symbol)
{
fragP->fr_subtype = C (UNCD_JUMP, DISP12);
- fragP->fr_var = md_relax_table[C (UNCD_JUMP, DISP12)].rlx_length;
}
else if (S_GET_SEGMENT (fragP->fr_symbol) == segment_type)
{
fragP->fr_subtype = C (UNCD_JUMP, DISP12);
- fragP->fr_var = md_relax_table[C (UNCD_JUMP, DISP12)].rlx_length;
}
else
{
fragP->fr_subtype = C (UNCD_JUMP, UNDEF_WORD_DISP);
- fragP->fr_var = md_relax_table[C (UNCD_JUMP, DISP32)].rlx_length;
}
break;
@@ -2273,31 +2274,31 @@ md_estimate_size_before_relax (fragP, segment_type)
/* Got a symbol and it's defined in this segment, become byte
sized - maybe it will fix up */
fragP->fr_subtype = C (COND_JUMP, DISP12);
- fragP->fr_var = md_relax_table[C (COND_JUMP, DISP12)].rlx_length;
}
else if (fragP->fr_symbol)
{
/* Its got a segment, but its not ours, so it will always be long. */
fragP->fr_subtype = C (COND_JUMP, UNDEF_WORD_DISP);
- fragP->fr_var = md_relax_table[C (COND_JUMP, DISP32)].rlx_length;
}
else
{
/* We know the abs value. */
fragP->fr_subtype = C (COND_JUMP, DISP12);
- fragP->fr_var = md_relax_table[C (COND_JUMP, DISP12)].rlx_length;
}
break;
case C (UNCD_JUMP, DISP12):
+ case C (UNCD_JUMP, DISP32):
case C (UNCD_JUMP, UNDEF_WORD_DISP):
case C (COND_JUMP, DISP12):
+ case C (COND_JUMP, DISP32):
case C (COND_JUMP, UNDEF_WORD_DISP):
/* When relaxing a section for the second time, we don't need to
- do anything. */
+ do anything besides return the current size. */
break;
}
+ fragP->fr_var = md_relax_table[fragP->fr_subtype].rlx_length;
return fragP->fr_var;
}