aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-arm.c9
2 files changed, 13 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index bdb7c2f..c6b2bb5 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -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
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 69299c7..1795d37 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;