mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-07-17 04:37:19 +00:00
libjxl: Do not use -mrelax-all on RISCV with clang
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
+56
@@ -0,0 +1,56 @@
|
|||||||
|
From 0cf439c243dfdb6eee6133ee87172235a42e59c9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Khem Raj <raj.khem@gmail.com>
|
||||||
|
Date: Sat, 14 Sep 2024 22:04:06 +0000
|
||||||
|
Subject: [PATCH] cmake: Do not use -mrelax-all with clang on RISCV64
|
||||||
|
|
||||||
|
This option causes clang 19+ to crash on riscv64
|
||||||
|
|
||||||
|
For RISC-V -mrelax-all causes the assembler stage to convert
|
||||||
|
all conditional branches into
|
||||||
|
|
||||||
|
bcc reg, reg, tmplabel
|
||||||
|
jmp target
|
||||||
|
tmplabel:
|
||||||
|
|
||||||
|
Unconditional jmp can reach targets a lot further than a conditional branch.
|
||||||
|
Unfortunately, jmp also has a limited range so sometimes needs to be
|
||||||
|
converted to an indirect jump which requires a scratch register.
|
||||||
|
We do all branch relaxation early for RISC-V during the compilation
|
||||||
|
stage so we can allocate the scratch register.
|
||||||
|
|
||||||
|
If the assembler also does branch relaxation it will increase the size
|
||||||
|
of the function and may cause unconditional jmps to go out of range.
|
||||||
|
If this happens, linking will fail.
|
||||||
|
|
||||||
|
Upstream-Status: Submitted [https://github.com/libjxl/libjxl/pull/3826]
|
||||||
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||||
|
---
|
||||||
|
CMakeLists.txt | 2 +-
|
||||||
|
CONTRIBUTORS | 1 +
|
||||||
|
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 8b2ccb57..39bee096 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -335,7 +335,7 @@ else ()
|
||||||
|
|
||||||
|
# Machine flags.
|
||||||
|
add_compile_options(-funwind-tables)
|
||||||
|
- if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
|
+ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "riscv")
|
||||||
|
add_compile_options("SHELL:-Xclang -mrelax-all")
|
||||||
|
endif()
|
||||||
|
if (CXX_CONSTRUCTOR_ALIASES_SUPPORTED)
|
||||||
|
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
|
||||||
|
index 848096f9..a88c6157 100644
|
||||||
|
--- a/CONTRIBUTORS
|
||||||
|
+++ b/CONTRIBUTORS
|
||||||
|
@@ -10,6 +10,7 @@ Iulia-Maria Comșa
|
||||||
|
Jan Wassenberg
|
||||||
|
Jon Sneyers
|
||||||
|
Jyrki Alakuijala
|
||||||
|
+Khem Raj
|
||||||
|
Krzysztof Potempa
|
||||||
|
Lode Vandevenne
|
||||||
|
Luca Versari
|
||||||
@@ -8,7 +8,9 @@ inherit cmake pkgconfig mime
|
|||||||
|
|
||||||
DEPENDS = "highway brotli"
|
DEPENDS = "highway brotli"
|
||||||
|
|
||||||
SRC_URI = "gitsm://github.com/libjxl/libjxl.git;protocol=https;nobranch=1"
|
SRC_URI = "gitsm://github.com/libjxl/libjxl.git;protocol=https;nobranch=1 \
|
||||||
|
file://0001-cmake-Do-not-use-mrelax-all-with-clang-on-RISCV64.patch \
|
||||||
|
"
|
||||||
|
|
||||||
SRCREV = "4a3b22d2600f92d8706fb72d85d52bfee2acbd54"
|
SRCREV = "4a3b22d2600f92d8706fb72d85d52bfee2acbd54"
|
||||||
S = "${WORKDIR}/git"
|
S = "${WORKDIR}/git"
|
||||||
|
|||||||
Reference in New Issue
Block a user