From c19023775066524355cf768eb9343f608c22b220 Mon Sep 17 00:00:00 2001 From: klzgrad Date: Sun, 21 Jan 2024 01:22:38 +0800 Subject: [PATCH] mipsel: build: Work around MIPS floating point ABI passing in LTO Clang reports: floating point ABI '-mdouble-float' is incompatible with target floating point ABI '-msoft-float' when -msoft-float is enabled for the architecture. --- 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 c7753ceec3..fdaf58bdfa 100644 --- a/src/build/config/compiler/BUILD.gn +++ b/src/build/config/compiler/BUILD.gn @@ -1334,6 +1334,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 == "") { @@ -1379,6 +1387,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" ]