summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cc/config/x86_linux_host.go1
-rw-r--r--cc/sanitize.go20
-rw-r--r--rust/config/x86_linux_host.go2
3 files changed, 13 insertions, 10 deletions
diff --git a/cc/config/x86_linux_host.go b/cc/config/x86_linux_host.go
index ce6836ba5..e1659d380 100644
--- a/cc/config/x86_linux_host.go
+++ b/cc/config/x86_linux_host.go
@@ -65,7 +65,6 @@ var (
linuxMuslLdflags = []string{
"-nostdlib",
- "-lgcc", "-lgcc_eh",
"--sysroot /dev/null",
}
diff --git a/cc/sanitize.go b/cc/sanitize.go
index 3cf8b5832..814fef6a9 100644
--- a/cc/sanitize.go
+++ b/cc/sanitize.go
@@ -480,8 +480,8 @@ func (sanitize *sanitize) begin(ctx BaseModuleContext) {
s.Diag.Cfi = nil
}
- // Disable sanitizers that depend on the UBSan runtime for windows/darwin/musl builds.
- if !ctx.Os().Linux() || ctx.Os() == android.LinuxMusl {
+ // Disable sanitizers that depend on the UBSan runtime for windows/darwin builds.
+ if !ctx.Os().Linux() {
s.Cfi = nil
s.Diag.Cfi = nil
s.Misc_undefined = nil
@@ -490,6 +490,12 @@ func (sanitize *sanitize) begin(ctx BaseModuleContext) {
s.Integer_overflow = nil
}
+ // Disable CFI for musl
+ if ctx.toolchain().Musl() {
+ s.Cfi = nil
+ s.Diag.Cfi = nil
+ }
+
// Also disable CFI for VNDK variants of components
if ctx.isVndk() && ctx.useVndk() {
if ctx.static() {
@@ -702,10 +708,10 @@ func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
flags.Local.AsFlags = append(flags.Local.AsFlags, sanitizeArg)
flags.Local.LdFlags = append(flags.Local.LdFlags, sanitizeArg)
- if ctx.toolchain().Bionic() {
- // Bionic sanitizer runtimes have already been added as dependencies so that
- // the right variant of the runtime will be used (with the "-android"
- // suffix), so don't let clang the runtime library.
+ if ctx.toolchain().Bionic() || ctx.toolchain().Musl() {
+ // Bionic and musl sanitizer runtimes have already been added as dependencies so that
+ // the right variant of the runtime will be used (with the "-android" or "-musl"
+ // suffixes), so don't let clang the runtime library.
flags.Local.LdFlags = append(flags.Local.LdFlags, "-fno-sanitize-link-runtime")
} else {
// Host sanitizers only link symbols in the final executable, so
@@ -1217,7 +1223,7 @@ func sanitizerRuntimeMutator(mctx android.BottomUpMutatorContext) {
addStaticDeps(config.BuiltinsRuntimeLibrary(toolchain))
}
- if runtimeLibrary != "" && (toolchain.Bionic() || c.sanitize.Properties.UbsanRuntimeDep) {
+ if runtimeLibrary != "" && (toolchain.Bionic() || toolchain.Musl() || c.sanitize.Properties.UbsanRuntimeDep) {
// UBSan is supported on non-bionic linux host builds as well
// Adding dependency to the runtime library. We are using *FarVariation*
diff --git a/rust/config/x86_linux_host.go b/rust/config/x86_linux_host.go
index 760834929..4d7c42219 100644
--- a/rust/config/x86_linux_host.go
+++ b/rust/config/x86_linux_host.go
@@ -42,8 +42,6 @@ var (
"-nodefaultlibs",
"-nostdlib",
"-Wl,--no-dynamic-linker",
- // for unwind
- "-lgcc", "-lgcc_eh",
}
linuxX86Rustflags = []string{}
linuxX86Linkflags = []string{}