On Fri, Jun 4, 2021 at 5:20 AM Palmer Dabbelt <pal...@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