return seh_kind_unknown;
}
+/* Verify that seh directives are supported. */
+
+static bool
+verify_target (const char *directive)
+{
+ if (seh_get_target_kind () == seh_kind_unknown)
+ {
+ as_warn (_("%s ignored for this target"), directive);
+ ignore_rest_of_line ();
+ return false;
+ }
+ return true;
+}
+
/* Verify that we're in the context of a seh_proc. */
static int
char *symbol_name;
char name_end;
- if (!verify_context (".seh_handler"))
+ if (!verify_target (".seh_handler")
+ || !verify_context (".seh_handler"))
return;
if (*input_line_pointer == 0 || *input_line_pointer == '\n')
static void
obj_coff_seh_endproc (int what ATTRIBUTE_UNUSED)
{
+ if (!verify_target (".seh_endproc"))
+ return;
demand_empty_rest_of_line ();
if (seh_ctx_cur == NULL)
{
char *symbol_name;
char name_end;
+ if (!verify_target (".seh_proc"))
+ return;
if (seh_ctx_cur != NULL)
{
as_bad (_("previous SEH entry not closed (missing .seh_endproc)"));
static void
obj_coff_seh_endprologue (int what ATTRIBUTE_UNUSED)
{
- if (!verify_context (".seh_endprologue")
+ if (!verify_target (".seh_endprologue")
+ || !verify_context (".seh_endprologue")
|| !seh_validate_seg (".seh_endprologue"))
return;
demand_empty_rest_of_line ();