Accepting request 911247 from home:marxin:branches:GNOME:Factory
- Enable LTO by using upstream patch fix-lto.patch. OBS-URL: https://build.opensuse.org/request/show/911247 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/webkit2gtk3?expand=0&rev=310
This commit is contained in:
96
fix-lto.patch
Normal file
96
fix-lto.patch
Normal file
@@ -0,0 +1,96 @@
|
||||
From 2a6731b62bf3043d095cbb7dc5731d7764933bed Mon Sep 17 00:00:00 2001
|
||||
From: Michael Catanzaro <mcatanzaro@gnome.org>
|
||||
Date: Mon, 9 Aug 2021 10:53:05 +0000
|
||||
Subject: [PATCH] Adding missing REFERENCED_FROM_ASM annotations to facilitate
|
||||
LTO https://bugs.webkit.org/show_bug.cgi?id=228865
|
||||
|
||||
Patch by Michael Catanzaro <mcatanzaro@gnome.org> on 2021-08-09
|
||||
Reviewed by Yusuke Suzuki.
|
||||
|
||||
When investigating why WebKitGTK fails to build with LTO (link-time optimization) enabled,
|
||||
one of the GCC developers noticed that we are missing __attribute__ (("used")) on several
|
||||
C++ functions declared in LLIntSlowPaths.h and WasmSlowPaths.h that are called only from
|
||||
asm. Without this attribute, GCC assumes the functions are unused and drops them, then
|
||||
linking fails because they really are used.
|
||||
|
||||
* llint/LLIntSlowPaths.h:
|
||||
* wasm/WasmSlowPaths.h:
|
||||
|
||||
Canonical link: https://commits.webkit.org/240354@main
|
||||
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@280770 268f45cc-cd09-0410-ab3c-d52691b4dbfc
|
||||
---
|
||||
Source/JavaScriptCore/ChangeLog | 16 ++++++++++++++++
|
||||
Source/JavaScriptCore/llint/LLIntSlowPaths.h | 20 ++++++++++----------
|
||||
Source/JavaScriptCore/wasm/WasmSlowPaths.h | 8 ++++----
|
||||
3 files changed, 30 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/Source/JavaScriptCore/llint/LLIntSlowPaths.h b/Source/JavaScriptCore/llint/LLIntSlowPaths.h
|
||||
index fbfd53cc551f..e20a0dfc6b87 100644
|
||||
--- a/Source/JavaScriptCore/llint/LLIntSlowPaths.h
|
||||
+++ b/Source/JavaScriptCore/llint/LLIntSlowPaths.h
|
||||
@@ -36,15 +36,15 @@ struct ProtoCallFrame;
|
||||
|
||||
namespace LLInt {
|
||||
|
||||
-extern "C" SlowPathReturnType llint_trace_operand(CallFrame*, const Instruction*, int fromWhere, int operand);
|
||||
-extern "C" SlowPathReturnType llint_trace_value(CallFrame*, const Instruction*, int fromWhere, VirtualRegister operand);
|
||||
-extern "C" void llint_write_barrier_slow(CallFrame*, JSCell*) WTF_INTERNAL;
|
||||
+extern "C" SlowPathReturnType llint_trace_operand(CallFrame*, const Instruction*, int fromWhere, int operand) REFERENCED_FROM_ASM;
|
||||
+extern "C" SlowPathReturnType llint_trace_value(CallFrame*, const Instruction*, int fromWhere, VirtualRegister operand) REFERENCED_FROM_ASM;
|
||||
+extern "C" void llint_write_barrier_slow(CallFrame*, JSCell*) REFERENCED_FROM_ASM WTF_INTERNAL;
|
||||
|
||||
#define LLINT_SLOW_PATH_DECL(name) \
|
||||
extern "C" SlowPathReturnType llint_##name(CallFrame* callFrame, const Instruction* pc)
|
||||
|
||||
#define LLINT_SLOW_PATH_HIDDEN_DECL(name) \
|
||||
- LLINT_SLOW_PATH_DECL(name) WTF_INTERNAL
|
||||
+ LLINT_SLOW_PATH_DECL(name) REFERENCED_FROM_ASM WTF_INTERNAL
|
||||
|
||||
LLINT_SLOW_PATH_HIDDEN_DECL(trace_prologue);
|
||||
LLINT_SLOW_PATH_HIDDEN_DECL(trace_prologue_function_for_call);
|
||||
@@ -149,13 +149,13 @@ LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_log_shadow_chicken_tail);
|
||||
LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_super_sampler_begin);
|
||||
LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_super_sampler_end);
|
||||
LLINT_SLOW_PATH_HIDDEN_DECL(slow_path_out_of_line_jump_target);
|
||||
-extern "C" SlowPathReturnType llint_throw_stack_overflow_error(VM*, ProtoCallFrame*) WTF_INTERNAL;
|
||||
-extern "C" SlowPathReturnType llint_slow_path_checkpoint_osr_exit(CallFrame* callFrame, EncodedJSValue unused) WTF_INTERNAL;
|
||||
-extern "C" SlowPathReturnType llint_slow_path_checkpoint_osr_exit_from_inlined_call(CallFrame* callFrame, EncodedJSValue callResult) WTF_INTERNAL;
|
||||
+extern "C" SlowPathReturnType llint_throw_stack_overflow_error(VM*, ProtoCallFrame*) REFERENCED_FROM_ASM WTF_INTERNAL;
|
||||
+extern "C" SlowPathReturnType llint_slow_path_checkpoint_osr_exit(CallFrame* callFrame, EncodedJSValue unused) REFERENCED_FROM_ASM WTF_INTERNAL;
|
||||
+extern "C" SlowPathReturnType llint_slow_path_checkpoint_osr_exit_from_inlined_call(CallFrame* callFrame, EncodedJSValue callResult) REFERENCED_FROM_ASM WTF_INTERNAL;
|
||||
#if ENABLE(C_LOOP)
|
||||
-extern "C" SlowPathReturnType llint_stack_check_at_vm_entry(VM*, Register*) WTF_INTERNAL;
|
||||
+extern "C" SlowPathReturnType llint_stack_check_at_vm_entry(VM*, Register*) REFERENCED_FROM_ASM WTF_INTERNAL;
|
||||
#endif
|
||||
-extern "C" SlowPathReturnType llint_check_vm_entry_permission(VM*, ProtoCallFrame*) WTF_INTERNAL;
|
||||
-extern "C" NO_RETURN_DUE_TO_CRASH void llint_crash() WTF_INTERNAL;
|
||||
+extern "C" SlowPathReturnType llint_check_vm_entry_permission(VM*, ProtoCallFrame*) REFERENCED_FROM_ASM WTF_INTERNAL;
|
||||
+extern "C" NO_RETURN_DUE_TO_CRASH void llint_crash() REFERENCED_FROM_ASM WTF_INTERNAL;
|
||||
|
||||
} } // namespace JSC::LLInt
|
||||
diff --git a/Source/JavaScriptCore/wasm/WasmSlowPaths.h b/Source/JavaScriptCore/wasm/WasmSlowPaths.h
|
||||
index 5b2b8f2895a1..7762118338a7 100644
|
||||
--- a/Source/JavaScriptCore/wasm/WasmSlowPaths.h
|
||||
+++ b/Source/JavaScriptCore/wasm/WasmSlowPaths.h
|
||||
@@ -47,7 +47,7 @@ namespace LLInt {
|
||||
extern "C" SlowPathReturnType slow_path_wasm_##name(CallFrame* callFrame, const Instruction* pc, Wasm::Instance* instance)
|
||||
|
||||
#define WASM_SLOW_PATH_HIDDEN_DECL(name) \
|
||||
- WASM_SLOW_PATH_DECL(name) WTF_INTERNAL
|
||||
+ WASM_SLOW_PATH_DECL(name) REFERENCED_FROM_ASM WTF_INTERNAL
|
||||
|
||||
#if ENABLE(WEBASSEMBLY_B3JIT)
|
||||
WASM_SLOW_PATH_HIDDEN_DECL(prologue_osr);
|
||||
@@ -84,9 +84,9 @@ WASM_SLOW_PATH_HIDDEN_DECL(memory_atomic_wait32);
|
||||
WASM_SLOW_PATH_HIDDEN_DECL(memory_atomic_wait64);
|
||||
WASM_SLOW_PATH_HIDDEN_DECL(memory_atomic_notify);
|
||||
|
||||
-extern "C" SlowPathReturnType slow_path_wasm_throw_exception(CallFrame*, const Instruction*, Wasm::Instance* instance, Wasm::ExceptionType) WTF_INTERNAL;
|
||||
-extern "C" SlowPathReturnType slow_path_wasm_popcount(const Instruction* pc, uint32_t) WTF_INTERNAL;
|
||||
-extern "C" SlowPathReturnType slow_path_wasm_popcountll(const Instruction* pc, uint64_t) WTF_INTERNAL;
|
||||
+extern "C" SlowPathReturnType slow_path_wasm_throw_exception(CallFrame*, const Instruction*, Wasm::Instance* instance, Wasm::ExceptionType) REFERENCED_FROM_ASM WTF_INTERNAL;
|
||||
+extern "C" SlowPathReturnType slow_path_wasm_popcount(const Instruction* pc, uint32_t) REFERENCED_FROM_ASM WTF_INTERNAL;
|
||||
+extern "C" SlowPathReturnType slow_path_wasm_popcountll(const Instruction* pc, uint64_t) REFERENCED_FROM_ASM WTF_INTERNAL;
|
||||
|
||||
} } // namespace JSC::LLInt
|
||||
|
@@ -1,3 +1,8 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 10 12:10:02 UTC 2021 - Martin Liška <mliska@suse.cz>
|
||||
|
||||
- Enable LTO by using upstream patch fix-lto.patch.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 5 08:27:25 UTC 2021 - Yifan Jiang <yfjiang@suse.com>
|
||||
|
||||
|
@@ -44,6 +44,7 @@ Source99: webkit2gtk3.keyring
|
||||
|
||||
# PATCH-FIX-OPENSUSE no-forced-sse.patch jengelh@iani.de -- cure execution of illegal instruction in i586 firefox.
|
||||
Patch0: no-forced-sse.patch
|
||||
Patch1: fix-lto.patch
|
||||
|
||||
BuildRequires: Mesa-libEGL-devel
|
||||
BuildRequires: Mesa-libGL-devel
|
||||
@@ -263,7 +264,6 @@ A small test browswer from webkit, useful for testing features.
|
||||
%autosetup -p1 -n webkitgtk-%{version}
|
||||
|
||||
%build
|
||||
%define _lto_cflags %{nil}
|
||||
# Here we must muzzle our dog so it doesn't eat all the memory
|
||||
max_link_jobs="%{?jobs:%{jobs}}"
|
||||
max_compile_jobs="%{?jobs:%{jobs}}"
|
||||
|
Reference in New Issue
Block a user