* [PATCH] configure: Add -mno-relax on riscv*
@ 2025-03-27 16:32 Vladimir Serbinenko
2025-04-10 14:50 ` Daniel Kiper
0 siblings, 1 reply; 2+ messages in thread
From: Vladimir Serbinenko @ 2025-03-27 16:32 UTC (permalink / raw)
To: grub-devel; +Cc: Vladimir Serbinenko
Without this option compiler sometimes emits R_RISCV_ALIGN relocs.
Unlike other relocs this one requires the linker to do NOP deletions
and we can't ignore them. Just instruct compiler not to emit them
Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
---
configure.ac | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/configure.ac b/configure.ac
index 34f4f9415..2818a73a6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -913,6 +913,31 @@ if test "x$target_cpu" = xloongarch64; then
TARGET_CCASFLAGS="$TARGET_CCASFLAGS -Wa,-mla-global-with-abs"
fi
+if test "x$target_cpu" = xriscv64 || test "x$target_cpu" = xriscv32; then
+ AC_CACHE_CHECK([for no-relax options], grub_cv_target_cc_mno_relax, [
+ grub_cv_target_cc_mno_relax=no
+ for cand in "-mno-relax" "-Wa,-mno-relax"; do
+ if test x"$grub_cv_target_cc_mno_relax" != xno ; then
+ break
+ fi
+ CFLAGS="$TARGET_CFLAGS $cand -Werror"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ asm (".globl start; start:");
+ void __main (void);
+ void __main (void) {}
+ int main (void);
+ ]], [[]])], [grub_cv_target_cc_mno_relax="$cand"], [])
+ done
+ ])
+
+ CFLAGS="$TARGET_CFLAGS"
+
+ if test x"$grub_cv_target_cc_mno_relax" != xno ; then
+ TARGET_CFLAGS="$TARGET_CFLAGS $grub_cv_target_cc_mno_relax"
+ TARGET_CCASFLAGS="$TARGET_CCASFLAGS $grub_cv_target_cc_mno_relax"
+ fi
+fi
+
# GRUB doesn't use float or doubles at all. Yet some toolchains may decide
# that floats are a good fit to run instead of what's written in the code.
# Given that floating point unit is disabled (if present to begin with)
--
2.49.0
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] configure: Add -mno-relax on riscv*
2025-03-27 16:32 [PATCH] configure: Add -mno-relax on riscv* Vladimir Serbinenko
@ 2025-04-10 14:50 ` Daniel Kiper
0 siblings, 0 replies; 2+ messages in thread
From: Daniel Kiper @ 2025-04-10 14:50 UTC (permalink / raw)
To: Vladimir Serbinenko; +Cc: grub-devel
On Thu, Mar 27, 2025 at 07:32:23PM +0300, Vladimir Serbinenko wrote:
> Without this option compiler sometimes emits R_RISCV_ALIGN relocs.
> Unlike other relocs this one requires the linker to do NOP deletions
> and we can't ignore them. Just instruct compiler not to emit them
>
> Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Daniel
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-04-10 14:51 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-27 16:32 [PATCH] configure: Add -mno-relax on riscv* Vladimir Serbinenko
2025-04-10 14:50 ` Daniel Kiper
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.