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:
Nick Clifton 2014-04-02 16:29:35 +01:00
parent 7a79c51466
commit cad0da33dc
2 changed files with 13 additions and 2 deletions

View File

@ -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

View File

@ -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;