Compile files which declare functions in inline assembly without LTO due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57703 --- src/base/allocator/partition_allocator/BUILD.gn.old 2022-10-01 13:53:03.367797474 +0200 +++ src/base/allocator/partition_allocator/BUILD.gn 2022-10-05 14:23:53.999860356 +0200 @@ -51,6 +51,30 @@ } } +if (use_starscan) { + static_library("partition_alloc_asm") { + if (gcc_lto) { + configs -= [ "//build/config/compiler:gcc_lto" ] + } + if (current_cpu == "x64") { + assert(pcscan_stack_supported) + sources = [ "starscan/stack/asm/x64/push_registers_asm.cc" ] + } else if (current_cpu == "x86") { + assert(pcscan_stack_supported) + sources = [ "starscan/stack/asm/x86/push_registers_asm.cc" ] + } else if (current_cpu == "arm") { + assert(pcscan_stack_supported) + sources = [ "starscan/stack/asm/arm/push_registers_asm.cc" ] + } else if (current_cpu == "arm64") { + assert(pcscan_stack_supported) + sources = [ "starscan/stack/asm/arm64/push_registers_asm.cc" ] + } else { + assert(!pcscan_stack_supported) + # To support a trampoline for another arch, please refer to v8/src/heap/base. + } + } +} + component("partition_alloc") { sources = [ "address_pool_manager.cc", @@ -262,21 +278,9 @@ } } if (use_starscan) { - if (current_cpu == "x64") { - assert(pcscan_stack_supported) - sources += [ "starscan/stack/asm/x64/push_registers_asm.cc" ] - } else if (current_cpu == "x86") { - assert(pcscan_stack_supported) - sources += [ "starscan/stack/asm/x86/push_registers_asm.cc" ] - } else if (current_cpu == "arm") { - assert(pcscan_stack_supported) - sources += [ "starscan/stack/asm/arm/push_registers_asm.cc" ] - } else if (current_cpu == "arm64") { - assert(pcscan_stack_supported) - sources += [ "starscan/stack/asm/arm64/push_registers_asm.cc" ] - } else { - # To support a trampoline for another arch, please refer to v8/src/heap/base. - assert(!pcscan_stack_supported) + deps = [] + if (current_cpu == "x64" || current_cpu == "x86" || current_cpu == "arm" || current_cpu == "arm64") { + deps += [ ":partition_alloc_asm" ] } } public_deps = [ @@ -289,7 +295,6 @@ ":partition_alloc_implementation", ":memory_tagging", ] - deps = [] public_configs = [] if (is_android) { # tagging.cc requires __arm_mte_set_* functions.