1
Fork 0

trigger unsafe_code on global_asm! invocations

This commit is contained in:
Kalle Wachsmuth 2024-02-20 00:14:53 +01:00
parent 3246e79513
commit dc7a01610f
No known key found for this signature in database
GPG key ID: 0B52AE391C674CE5
7 changed files with 59 additions and 4 deletions

View file

@ -773,7 +773,7 @@ pub(super) fn expand_global_asm<'cx>(
kind: ast::VisibilityKind::Inherited,
tokens: None,
},
span: ecx.with_def_site_ctxt(sp),
span: sp,
tokens: None,
})])
} else {

View file

@ -72,8 +72,11 @@ lint_builtin_explicit_outlives = outlives requirements can be inferred
lint_builtin_export_name_fn = declaration of a function with `export_name`
lint_builtin_export_name_method = declaration of a method with `export_name`
lint_builtin_export_name_static = declaration of a static with `export_name`
lint_builtin_global_asm = usage of `core::arch::global_asm`
lint_builtin_global_macro_unsafety = using this macro is unsafe even though it does not need an `unsafe` block
lint_builtin_impl_unsafe_method = implementation of an `unsafe` method
lint_builtin_incomplete_features = the feature `{$name}` is incomplete and may not be safe to use and/or cause compiler crashes

View file

@ -393,6 +393,10 @@ impl EarlyLintPass for UnsafeCode {
}
}
ast::ItemKind::GlobalAsm(..) => {
self.report_unsafe(cx, it.span, BuiltinUnsafe::GlobalAsm);
}
_ => {}
}
}

View file

@ -114,6 +114,9 @@ pub enum BuiltinUnsafe {
DeclUnsafeMethod,
#[diag(lint_builtin_impl_unsafe_method)]
ImplUnsafeMethod,
#[diag(lint_builtin_global_asm)]
#[note(lint_builtin_global_macro_unsafety)]
GlobalAsm,
}
#[derive(LintDiagnostic)]