From 87df0029af98c0dcbda9f66315ee575bdc45924d Mon Sep 17 00:00:00 2001 From: Justin Michaud Date: Thu, 22 Jan 2026 15:29:01 -0700 Subject: [PATCH] Fix clang20 jsc build https://bugs.webkit.org/show_bug.cgi?id=305773 See https://github.com/WebPlatformForEmbedded/WPEWebKit/issues/1600. We fix this build error: ``` :320:49: error: Relocation Not In Range 320 | movw r4, #:lower16:.Lllint_op_tail_call_varargs - .Lllint_relativePCBase | ^ :321:49: error: Relocation Not In Range 321 | movt r4, #:upper16:.Lllint_op_tail_call_varargs - .Lllint_relativePCBase ... by emiting a worse sequence, a jump + data + a pc-relative load. This is only emitted at startup, so the perf impact should be minimal. --- Source/JavaScriptCore/llint/LowLevelInterpreter.asm | 3 +-- Source/JavaScriptCore/offlineasm/arm.rb | 7 ++++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/JavaScriptCore/llint/LowLevelInterpreter.asm b/Source/JavaScriptCore/llint/LowLevelInterpreter.asm index 94c5690c347c6..ea69cae16a0a4 100644 --- a/Source/JavaScriptCore/llint/LowLevelInterpreter.asm +++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.asm @@ -2005,8 +2005,7 @@ else tagCodePtr t3, BytecodePtrTag, AddressDiversified, t4 storep t3, [t4] elsif ARMv7 - mvlbl (label - _%kind%_relativePCBase), t4 - addp t4, t3, t4 + mvlbl label, t4 move index, t5 storep t4, [map, t5, 4] end diff --git a/Source/JavaScriptCore/offlineasm/arm.rb b/Source/JavaScriptCore/offlineasm/arm.rb index ac7a651da41c2..b8bbd9c3232ae 100644 --- a/Source/JavaScriptCore/offlineasm/arm.rb +++ b/Source/JavaScriptCore/offlineasm/arm.rb @@ -755,8 +755,10 @@ def lowerARMCommon armMoveImmediate(operands[0].value >> 32, operands[1]) armMoveImmediate(operands[0].value & 0xffffffff, operands[2]) when "mvlbl" - $asm.puts "movw #{operands[1].armOperand}, \#:lower16:#{operands[0].value}" - $asm.puts "movt #{operands[1].armOperand}, \#:upper16:#{operands[0].value}" + $asm.puts ".align 4" + $asm.puts "b.w #+4" + $asm.puts ".word #{operands[0].value}" + $asm.puts "ldr.w #{operands[1].armOperand}, [pc, #-8]" when "sxb2i" $asm.puts "sxtb #{armFlippedOperands(operands)}" when "sxh2i" @@ -1000,4 +1002,3 @@ def lowerARMCommon end end end -