diff options
Diffstat (limited to 'rust/sanitize.go')
-rw-r--r-- | rust/sanitize.go | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/rust/sanitize.go b/rust/sanitize.go index 39aaf33c2..a3c5cb583 100644 --- a/rust/sanitize.go +++ b/rust/sanitize.go @@ -50,7 +50,6 @@ type SanitizeProperties struct { } } SanitizerEnabled bool `blueprint:"mutated"` - SanitizeDep bool `blueprint:"mutated"` // Used when we need to place libraries in their own directory, such as ASAN. InSanitizerDir bool `blueprint:"mutated"` @@ -175,7 +174,7 @@ func (sanitize *sanitize) begin(ctx BaseModuleContext) { } // Enable Memtag for all components in the include paths (for Aarch64 only) - if ctx.Arch().ArchType == android.Arm64 { + if ctx.Arch().ArchType == android.Arm64 && ctx.Os().Bionic() { if ctx.Config().MemtagHeapSyncEnabledForPath(ctx.ModuleDir()) { if s.Memtag_heap == nil { s.Memtag_heap = proptools.BoolPtr(true) @@ -201,7 +200,7 @@ func (sanitize *sanitize) begin(ctx BaseModuleContext) { } // HWASan requires AArch64 hardware feature (top-byte-ignore). - if ctx.Arch().ArchType != android.Arm64 { + if ctx.Arch().ArchType != android.Arm64 || !ctx.Os().Bionic() { s.Hwaddress = nil } @@ -216,7 +215,7 @@ func (sanitize *sanitize) begin(ctx BaseModuleContext) { } // Memtag_heap is only implemented on AArch64. - if ctx.Arch().ArchType != android.Arm64 { + if ctx.Arch().ArchType != android.Arm64 || !ctx.Os().Bionic() { s.Memtag_heap = nil } @@ -235,7 +234,7 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags, deps PathDeps) ( } if Bool(sanitize.Properties.Sanitize.Fuzzer) { flags.RustFlags = append(flags.RustFlags, fuzzerFlags...) - if ctx.Arch().ArchType == android.Arm64 { + if ctx.Arch().ArchType == android.Arm64 && ctx.Os().Bionic() { flags.RustFlags = append(flags.RustFlags, hwasanFlags...) } else { flags.RustFlags = append(flags.RustFlags, asanFlags...) @@ -283,13 +282,13 @@ func rustSanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) { var deps []string if mod.IsSanitizerEnabled(cc.Asan) || - (mod.IsSanitizerEnabled(cc.Fuzzer) && mctx.Arch().ArchType != android.Arm64) { + (mod.IsSanitizerEnabled(cc.Fuzzer) && (mctx.Arch().ArchType != android.Arm64 || !mctx.Os().Bionic())) { variations = append(variations, blueprint.Variation{Mutator: "link", Variation: "shared"}) depTag = cc.SharedDepTag() deps = []string{config.LibclangRuntimeLibrary(mod.toolchain(mctx), "asan")} } else if mod.IsSanitizerEnabled(cc.Hwasan) || - (mod.IsSanitizerEnabled(cc.Fuzzer) && mctx.Arch().ArchType == android.Arm64) { + (mod.IsSanitizerEnabled(cc.Fuzzer) && mctx.Arch().ArchType == android.Arm64 && mctx.Os().Bionic()) { // TODO(b/204776996): HWASan for static Rust binaries isn't supported yet. if binary, ok := mod.compiler.(binaryInterface); ok { if binary.staticallyLinked() { @@ -444,20 +443,12 @@ func (mod *Module) IsSanitizerExplicitlyDisabled(t cc.SanitizerType) bool { return mod.sanitize.isSanitizerExplicitlyDisabled(t) } -func (mod *Module) SanitizeDep() bool { - return mod.sanitize.Properties.SanitizeDep -} - func (mod *Module) SetSanitizer(t cc.SanitizerType, b bool) { if !Bool(mod.sanitize.Properties.Sanitize.Never) { mod.sanitize.SetSanitizer(t, b) } } -func (mod *Module) SetSanitizeDep(b bool) { - mod.sanitize.Properties.SanitizeDep = b -} - func (mod *Module) StaticallyLinked() bool { if lib, ok := mod.compiler.(libraryInterface); ok { return lib.rlib() || lib.static() |