grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3 5/5] loongarch: Use the -mno-relax cflags for gcc


From: Xi Ruoyao
Subject: Re: [PATCH v3 5/5] loongarch: Use the -mno-relax cflags for gcc
Date: Tue, 13 Jun 2023 20:09:38 +0800
User-agent: Evolution 3.48.3

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 <wuxiaotian@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 <xry111@xry111.site>
School of Aerospace Science and Technology, Xidian University

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]