aboutsummaryrefslogtreecommitdiff
path: root/gas/config/obj-coff-seh.c
diff options
context:
space:
mode:
Diffstat (limited to 'gas/config/obj-coff-seh.c')
-rw-r--r--gas/config/obj-coff-seh.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/gas/config/obj-coff-seh.c b/gas/config/obj-coff-seh.c
index 964fe87..f907e72 100644
--- a/gas/config/obj-coff-seh.c
+++ b/gas/config/obj-coff-seh.c
@@ -582,12 +582,31 @@ obj_coff_seh_pushreg (int what ATTRIBUTE_UNUSED)
static void
obj_coff_seh_pushframe (int what ATTRIBUTE_UNUSED)
{
+ int code = 0;
+
if (!verify_context_and_target (".seh_pushframe", seh_kind_x64)
|| !seh_validate_seg (".seh_pushframe"))
return;
+
+ SKIP_WHITESPACE();
+
+ if (is_name_beginner (*input_line_pointer))
+ {
+ char* identifier;
+
+ get_symbol_name (&identifier);
+ if (strcmp (identifier, "code") != 0)
+ {
+ as_bad(_("invalid argument \"%s\" for .seh_pushframe. Expected \"code\" or nothing"),
+ identifier);
+ return;
+ }
+ code = 1;
+ }
+
demand_empty_rest_of_line ();
- seh_x64_make_prologue_element (UWOP_PUSH_MACHFRAME, 0, 0);
+ seh_x64_make_prologue_element (UWOP_PUSH_MACHFRAME, code, 0);
}
/* Add a register save-unwind token to current context. */