Fix a null-pointer dereference and some range checks.
This commit is contained in:
parent
9540464302
commit
22862cde86
@ -1,3 +1,8 @@
|
||||
2001-01-30 Alan Modra <alan@linuxcare.com.au>
|
||||
|
||||
* config/tc-hppa.c (pa_ip): Support 12 bit branches to absolute
|
||||
destinations. Correct range check for 17 and 22 bit branches.
|
||||
|
||||
2001-01-25 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config/tc-m68k.c (tc_gen_reloc): Do not abort if tcbit is
|
||||
|
@ -3193,7 +3193,9 @@ pa_ip (str)
|
||||
get_expression (s);
|
||||
s = expr_end;
|
||||
the_insn.pcrel = 1;
|
||||
if (!strcmp (S_GET_NAME (the_insn.exp.X_add_symbol), "L$0\001"))
|
||||
if (!the_insn.exp.X_add_symbol
|
||||
|| !strcmp (S_GET_NAME (the_insn.exp.X_add_symbol),
|
||||
"L$0\001"))
|
||||
{
|
||||
num = evaluate_absolute (&the_insn);
|
||||
if (num % 4)
|
||||
@ -3201,9 +3203,10 @@ pa_ip (str)
|
||||
as_bad (_("Branch to unaligned address"));
|
||||
break;
|
||||
}
|
||||
CHECK_FIELD (num, 8199, -8184, 0);
|
||||
|
||||
opcode |= re_assemble_12 ((num - 8) >> 2);
|
||||
if (the_insn.exp.X_add_symbol)
|
||||
num -= 8;
|
||||
CHECK_FIELD (num, 8191, -8192, 0);
|
||||
opcode |= re_assemble_12 (num >> 2);
|
||||
continue;
|
||||
}
|
||||
else
|
||||
@ -3232,11 +3235,9 @@ pa_ip (str)
|
||||
as_bad (_("Branch to unaligned address"));
|
||||
break;
|
||||
}
|
||||
CHECK_FIELD (num, 262143, -262144, 0);
|
||||
|
||||
if (the_insn.exp.X_add_symbol)
|
||||
num -= 8;
|
||||
|
||||
CHECK_FIELD (num, 262143, -262144, 0);
|
||||
opcode |= re_assemble_17 (num >> 2);
|
||||
continue;
|
||||
}
|
||||
@ -3265,11 +3266,9 @@ pa_ip (str)
|
||||
as_bad (_("Branch to unaligned address"));
|
||||
break;
|
||||
}
|
||||
CHECK_FIELD (num, 8388607, -8388608, 0);
|
||||
|
||||
if (the_insn.exp.X_add_symbol)
|
||||
num -= 8;
|
||||
|
||||
CHECK_FIELD (num, 8388607, -8388608, 0);
|
||||
opcode |= re_assemble_22 (num >> 2);
|
||||
}
|
||||
else
|
||||
@ -3297,11 +3296,9 @@ pa_ip (str)
|
||||
as_bad (_("Branch to unaligned address"));
|
||||
break;
|
||||
}
|
||||
CHECK_FIELD (num, 262143, -262144, 0);
|
||||
|
||||
if (the_insn.exp.X_add_symbol)
|
||||
num -= 8;
|
||||
|
||||
CHECK_FIELD (num, 262143, -262144, 0);
|
||||
opcode |= re_assemble_17 (num >> 2);
|
||||
continue;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user