From ecf4e664e060597c6f66654c08787d4cd3262d30 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Thu, 20 Oct 2022 13:59:17 -0700 Subject: [PATCH] Disable LTO and CFI for riscv64 Building with LTO and CFI enabled for riscv64 causes link failures: ld.lld: error: lto.tmp: cannot link object files with different floating-point ABI ld.lld: error: undefined symbol: guard variable for android::hardware::BufferedTextOutput::getBuffer() const::ts Disable them for now. Test: lunch aosp_riscv64-userdebug && m ALLOW_MISSING_DEPENDENCIES=true ndk_sysroot Change-Id: I3489952abebeeb3f4de664fd3e436232aac298d7 --- cc/lto.go | 5 +++++ cc/sanitize.go | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/cc/lto.go b/cc/lto.go index 581856b46..e068b055d 100644 --- a/cc/lto.go +++ b/cc/lto.go @@ -91,6 +91,11 @@ func (lto *lto) flags(ctx BaseModuleContext, flags Flags) Flags { return flags } + // LTO doesn't work on riscv64 yet. + if ctx.Arch().ArchType == android.Riscv64 { + return flags + } + if lto.LTO(ctx) { var ltoCFlag string var ltoLdFlag string diff --git a/cc/sanitize.go b/cc/sanitize.go index 0b47f0e6d..d39b0eb47 100644 --- a/cc/sanitize.go +++ b/cc/sanitize.go @@ -511,6 +511,12 @@ func (sanitize *sanitize) begin(ctx BaseModuleContext) { s.Integer_overflow = nil } + // CFI doesn't work for riscv64 yet because LTO doesn't work. + if ctx.Arch().ArchType == android.Riscv64 { + s.Cfi = nil + s.Diag.Cfi = nil + } + // Disable CFI for musl if ctx.toolchain().Musl() { s.Cfi = nil