[PATCH] RISC-V: Enable riscv attributes by default for all riscv targets.

Nelson Chu nelson.chu@sifive.com
Fri Jun 4 01:13:37 GMT 2021


On Fri, Jun 4, 2021 at 5:20 AM Palmer Dabbelt <palmer@dabbelt.com> wrote:
>
> On Thu, 03 Jun 2021 13:55:40 PDT (-0700), Jim Wilson wrote:
> > These were only enabled for embedded elf originally because that was
> > the safe option, and linux had no obvious use for them.  But now that
> > we have new extensions coming like V that affect process state and ABIs,
> > the attributes are expected to be useful for linux, and may be required
> > by the psABI.  clang already emits them for all riscv targets.
> >
> > Tested with a patched open embedded build and boot, and a native
> > toolchain build.
> >
> > Committed.
>
> Works for me.
>
> Nelson: I'm assuming this is why the .riscv.attributes is in
> binutils-all now?  That seems fine, we should just call it out as the
> reason explicitly by splitting that out into its own commit.

Yes this patch will make .riscv.attributes always be generated, both
for elf and linux toolchains.
Got it, I will split this one into a separate commit,  thanks.

FYI, this update resolves the ABI problems for linux toolchain that I
met before,
https://sourceware.org/pipermail/binutils/2020-November/114016.html
Now linux toolchain also generate the elf architecture attributes, so
binutils will try to choose the correct ABI according to the
attributes, if user compile a assembly code without setting -mabi=.

Thanks
Nelson


> > Jim
> >
> >       gcc/
> >       * config.gcc (riscv*-*-*): If --with-riscv-attribute not used,
> >       turn TARGET_RISCV_ATTRIBUTES on for all riscv targets.
> > ---
> >  gcc/config.gcc | 9 +--------
> >  1 file changed, 1 insertion(+), 8 deletions(-)
> >
> > diff --git a/gcc/config.gcc b/gcc/config.gcc
> > index 92fad8e20ca..6833a6c13d9 100644
> > --- a/gcc/config.gcc
> > +++ b/gcc/config.gcc
> > @@ -4605,14 +4605,7 @@ case "${target}" in
> >                       tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
> >                       ;;
> >               ""|default)
> > -                     case "${target}" in
> > -                     riscv*-*-elf*)
> > -                             tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
> > -                             ;;
> > -                     *)
> > -                             tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=0"
> > -                             ;;
> > -                     esac
> > +                     tm_defines="${tm_defines} TARGET_RISCV_ATTRIBUTE=1"
> >                       ;;
> >               *)
> >                       echo "--with-riscv-attribute=${with_riscv_attribute} is not supported.  The argument must begin with yes, no or default." 1>&2


More information about the Gcc-patches mailing list