diff --git a/gas/ChangeLog b/gas/ChangeLog index bdb7c2fd01..c6b2bb543a 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2014-04-02 Nick Clifton + + 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 * config/tc-score.c (s3_parse_pce_inst): Add "%s" parameter to diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 69299c7b1c..1795d3765a 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -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;