mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-28 12:33:36 +08:00
Fix assembler segfault on gcc/crtstuff.c file.
* config/tc-ia64.c (ia64_flush_insns): Handle unwind directives not immediately followed by an instruction.
This commit is contained in:
parent
428e1889bc
commit
b44b1b85f3
@ -1,3 +1,8 @@
|
||||
2001-01-15 Jim Wilson <wilson@redhat.com>
|
||||
|
||||
* config/tc-ia64.c (ia64_flush_insns): Handle unwind directives
|
||||
not immediately followed by an instruction.
|
||||
|
||||
2001-01-15 Kazu Hirata <kazu@hxi.com>
|
||||
|
||||
* config/tc-m68hc11.c: Fix formatting.
|
||||
|
@ -909,6 +909,7 @@ ia64_flush_insns ()
|
||||
struct label_fix *lfix;
|
||||
segT saved_seg;
|
||||
subsegT saved_subseg;
|
||||
unw_rec_list *ptr;
|
||||
|
||||
if (!md.last_text_seg)
|
||||
return;
|
||||
@ -936,6 +937,22 @@ ia64_flush_insns ()
|
||||
}
|
||||
CURR_SLOT.tag_fixups = 0;
|
||||
|
||||
/* In case there are unwind directives following the last instruction,
|
||||
resolve those now. We only handle body and prologue directives here.
|
||||
Give an error for others. */
|
||||
for (ptr = unwind.current_entry; ptr; ptr = ptr->next)
|
||||
{
|
||||
if (ptr->r.type == prologue || ptr->r.type == prologue_gr
|
||||
|| ptr->r.type == body)
|
||||
{
|
||||
ptr->slot_number = (unsigned long) frag_more (0);
|
||||
ptr->slot_frag = frag_now;
|
||||
}
|
||||
else
|
||||
as_bad (_("Unwind directive not followed by an instruction."));
|
||||
}
|
||||
unwind.current_entry = NULL;
|
||||
|
||||
subseg_set (saved_seg, saved_subseg);
|
||||
|
||||
if (md.qp.X_op == O_register)
|
||||
|
Loading…
Reference in New Issue
Block a user