On Tue, 2023-06-13 at 13:39 +0200, Daniel Kiper wrote:
> On Tue, Jun 13, 2023 at 05:06:35PM +0800, Xiaotian Wu wrote:
> > Because the binutils of the loongarch architecture adds relaxation
> > support [1],
> > the next version of binutils will not be able to build grub.
> > 
> > So we use the -mno-relax cflags to disable gcc to generate
> > relaxation
> > relocations to enhance the compatibility of grub.
> > 
> > [1]:
> > https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=56576f4a722b7398d35802ecf7d4185c27d6d69b
> > 
> > Signed-off-by: Xiaotian Wu <wuxiaot...@loongson.cn>
> > ---
> >  configure.ac | 12 ++++++++++++
> >  1 file changed, 12 insertions(+)
> > 
> > diff --git a/configure.ac b/configure.ac
> > index d9f088d12..cd3cc6ba8 100644
> > --- a/configure.ac
> > +++ b/configure.ac
> > @@ -874,6 +874,18 @@ if test "x$target_cpu" = xloongarch64; then
> >      TARGET_CFLAGS="$TARGET_CFLAGS -mno-explicit-relocs -fno-plt"
> >      TARGET_CCASFLAGS="$TARGET_CCASFLAGS -mno-explicit-relocs -fno-
> > plt"
> >    fi
> > +
> > +  AC_CACHE_CHECK([whether _mno_relax works],
> > [grub_cv_cc_mno_relax], [
> > +    CFLAGS="$TARGET_CFLAGS -mno-relax -Werror"
> > +    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
> > +       [grub_cv_cc_mno_relax=yes],
> > +       [grub_cv_cc_mno_relax=no])
> > +  ])
> > +  if test "x$grub_cv_cc_mno_relax" = xyes; then
> > +    TARGET_CFLAGS="$TARGET_CFLAGS -mno-relax"
> > +    TARGET_CCASFLAGS="$TARGET_CCASFLAGS -mno-relax"
> > +  fi
> 
> Could not you reuse sparc64 code which is ~100 lines below? If not
> please make loongarch code as similar as possible to the sparc64 one.

More important reason is we need to try -Wa,-mno-relax along with -mno-
relax, like SPARC64.  GCC 13 and earlier does not accept -mno-relax, but
the assembler itself can still generate R_LARCH_RELAX etc.  So if a
distro uses GCC 13 alongside Binutils 2.41, we'll need -Wa,-mno-relax.

Note that Binutils 2.41 will be released in Feb 2024 but GCC 14 will be
released in mid 2024 (Apr to Jun) so it can be expected that some
distros will really use Binutils 2.41 and GCC 13.

-- 
Xi Ruoyao <xry...@xry111.site>
School of Aerospace Science and Technology, Xidian University

-- 
Xi Ruoyao <xry...@xry111.site>
School of Aerospace Science and Technology, Xidian University

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to