Rollup merge of #128348 - dingxiangfei2009:allow-shadow-call-stack-sanitizer, r=tmandry
Unconditionally allow shadow call-stack sanitizer for AArch64 It is possible to do so whenever `-Z fixed-x18` is applied. cc ``@Darksonn`` for context The reasoning is that, as soon as reservation on `x18` is forced through the flag `fixed-x18`, on AArch64 the option to instrument with [Shadow Call Stack sanitizer](https://clang.llvm.org/docs/ShadowCallStack.html) is then applicable regardless of the target configuration. At the every least, we would like to relax the restriction on specifically `aarch64-unknonw-none`. For this option, we can include a documentation change saying that users of compiled objects need to ensure that they are linked to runtime with Shadow Call Stack instrumentation support. Related: #121972
This commit is contained in:
commit
3075644a3d
6 changed files with 55 additions and 2 deletions
|
@ -1188,7 +1188,12 @@ fn validate_commandline_args_with_session_available(sess: &Session) {
|
|||
|
||||
// Sanitizers can only be used on platforms that we know have working sanitizer codegen.
|
||||
let supported_sanitizers = sess.target.options.supported_sanitizers;
|
||||
let unsupported_sanitizers = sess.opts.unstable_opts.sanitizer - supported_sanitizers;
|
||||
let mut unsupported_sanitizers = sess.opts.unstable_opts.sanitizer - supported_sanitizers;
|
||||
// Niche: if `fixed-x18`, or effectively switching on `reserved-x18` flag, is enabled
|
||||
// we should allow Shadow Call Stack sanitizer.
|
||||
if sess.opts.unstable_opts.fixed_x18 && sess.target.arch == "aarch64" {
|
||||
unsupported_sanitizers -= SanitizerSet::SHADOWCALLSTACK;
|
||||
}
|
||||
match unsupported_sanitizers.into_iter().count() {
|
||||
0 => {}
|
||||
1 => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue