diff options
Diffstat (limited to 'net-libs/nodejs/files/nodejs-16.0.0-v8_lto.patch')
-rw-r--r-- | net-libs/nodejs/files/nodejs-16.0.0-v8_lto.patch | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/net-libs/nodejs/files/nodejs-16.0.0-v8_lto.patch b/net-libs/nodejs/files/nodejs-16.0.0-v8_lto.patch new file mode 100644 index 000000000000..a3e4acb02c3a --- /dev/null +++ b/net-libs/nodejs/files/nodejs-16.0.0-v8_lto.patch @@ -0,0 +1,39 @@ +From ea694e2b138d2f991989e09fc0e964fec3587b5f Mon Sep 17 00:00:00 2001 +From: Jesse Chan <jc@linux.com> +Date: Thu, 22 Apr 2021 19:41:09 +0800 +Subject: [PATCH] tools: disable LTO for "v8_cppgc_shared" target + +"PushAllRegistersAndIterateStack" is implemented in assembly and +called from "stack.cc" via 'extern "C"'. [1] + +However, LTO does not work well with symbol usage from assembly. [2] + +This change workarounds the issue by disabling LTO for the target. + +With GCC 10 and "./configure --enable-lto", compilation succeeds +after this change. + +[1] v8/v8@c10863153 +[2] https://gcc.gnu.org/wiki/LinkTimeOptimizationFAQ#Symbol_usage_from_assembly_language + +Refs: #35957 +Refs: #38335 +Signed-off-by: Jesse Chan <jc@linux.com> +--- + tools/v8_gypfiles/v8.gyp | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp +index ccb5984f47d..377e12d1fdc 100644 +--- a/tools/v8_gypfiles/v8.gyp ++++ b/tools/v8_gypfiles/v8.gyp +@@ -1378,6 +1378,9 @@ + '<(V8_ROOT)/src/heap/base/worklist.h', + ], + 'conditions': [ ++ ['enable_lto=="true"', { ++ 'cflags_cc': [ '-fno-lto' ], ++ }], + ['clang or OS!="win"', { + 'conditions': [ + ['_toolset == "host" and host_arch == "x64" or _toolset == "target" and target_arch=="x64"', { |