mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-12 11:53:32 +08:00
This fixes an internal error in GAS, triggered by the test case reported in PR 16765.
The problem was that gcc was generating assembler with missing unwind directives in it, so that a gas_assert was being triggered. The patch replaces the assert with an error message. * config/tc-arm.c (create_unwind_entry): Report an error if an attempt to recreate an unwind directive is encountered.
This commit is contained in:
parent
7a79c51466
commit
cad0da33dc
@ -1,3 +1,9 @@
|
||||
2014-04-02 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR gas/16765
|
||||
* config/tc-arm.c (create_unwind_entry): Report an error if an
|
||||
attempt to recreate an unwind directive is encountered.
|
||||
|
||||
2014-03-27 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* config/tc-score.c (s3_parse_pce_inst): Add "%s" parameter to
|
||||
|
@ -20992,7 +20992,7 @@ start_unwind_section (const segT text_seg, int idx)
|
||||
|
||||
/* Start an unwind table entry. HAVE_DATA is nonzero if we have additional
|
||||
personality routine data. Returns zero, or the index table value for
|
||||
and inline entry. */
|
||||
an inline entry. */
|
||||
|
||||
static valueT
|
||||
create_unwind_entry (int have_data)
|
||||
@ -21063,7 +21063,12 @@ create_unwind_entry (int have_data)
|
||||
}
|
||||
else
|
||||
{
|
||||
gas_assert (unwind.personality_index == -1);
|
||||
/* PR 16765: Missing or misplaced unwind directives can trigger this. */
|
||||
if (unwind.personality_index != -1)
|
||||
{
|
||||
as_bad (_("attempt to recreate an unwind entry"));
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* An extra byte is required for the opcode count. */
|
||||
size = unwind.opcode_count + 1;
|
||||
|
Loading…
Reference in New Issue
Block a user