From 35c3e169b8b25cae31a8c8d3752a148ea32283c1 Mon Sep 17 00:00:00 2001 From: klzgrad Date: Sun, 21 Jan 2024 01:22:38 +0800 Subject: [PATCH] build: Work around MPIS floating point ABI passing in LTO --- src/build/config/compiler/BUILD.gn | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/build/config/compiler/BUILD.gn b/src/build/config/compiler/BUILD.gn index 84dcce28fe..ddbc3514ae 100644 --- a/src/build/config/compiler/BUILD.gn +++ b/src/build/config/compiler/BUILD.gn @@ -1291,6 +1291,14 @@ config("compiler_cpu_abi") { } cflags += [ "-m${mips_float_abi}-float" ] + + # Fix float ABI information not being passed in LLVM bitcode for LTO + # and link failure with -mdouble-float being incorrectly used by default + # while the bitcode was compiled with -msoft-float. + # See https://discourse.llvm.org/t/myterious-soft-float-output-in-lto-cache/70753 + if (!is_debug && use_thin_lto && is_a_target_toolchain && mips_float_abi == "soft") { + ldflags += [ "-Wl,-mllvm,-mattr=+soft-float" ] + } } else if (current_cpu == "mips" && !is_nacl) { ldflags += [ "-Wl,--hash-style=sysv" ] if (custom_toolchain == "") { @@ -1336,6 +1344,14 @@ config("compiler_cpu_abi") { } cflags += [ "-m${mips_float_abi}-float" ] + + # Fix float ABI information not being passed in LLVM bitcode for LTO + # and link failure with -mdouble-float being incorrectly used by default + # while the bitcode was compiled with -msoft-float. + # See https://discourse.llvm.org/t/myterious-soft-float-output-in-lto-cache/70753 + if (!is_debug && use_thin_lto && is_a_target_toolchain && mips_float_abi == "soft") { + ldflags += [ "-Wl,-mllvm,-mattr=+soft-float" ] + } } else if (current_cpu == "mips64el") { cflags += [ "-D__SANE_USERSPACE_TYPES__" ] ldflags += [ "-Wl,--hash-style=sysv" ]