Re: [PATCH -next v21 23/27] riscv: detect assembler support for .option arch

Palmer Dabbelt
2024-01-21T02:55:39Z

On Sat, 20 Jan 2024 17:13:41 PST (-0800), ebiggers@kernel.org wrote:
> Hi Andy,
>
> On Mon, Jun 05, 2023 at 11:07:20AM +0000, Andy Chiu wrote:
>> +config AS_HAS_OPTION_ARCH
>> + # https://reviews.llvm.org/D123515
>> + def_bool y
>> + depends on $(as-instr, .option arch$(comma) +m)
>> + depends on !$(as-instr, .option arch$(comma) -i)
>
> With tip-of-tree clang (llvm-project commit 85a8e5c3e0586e85), I'm seeing
> AS_HAS_OPTION_ARCH be set to n. It's the second "depends on" that makes it be
> set to n, so apparently clang started accepting ".option arch -i". What was
> your intent here for checking that ".option arch -i" is not supported? I'd
> think that just the first "depends on" would be sufficient.

I'm not sure what Andy's rationale was, but de3a913df6e ("RISC-V:
Clarify the behavior of .option arch directive.") in binutils-gdb
stopped accepting `.option arch, -i` along with fixing a handful of
other oddities in our `.option arch` handling.

If that's all this is testing for then we should probably add some sort
of version check for old binutils (or maybe just ignore it, looks like
it was a bugfix and the old version was never released).

+Nelson, as he probably knows better than I do.

That said: what does LLVM do if you ask it to turn the "I" base ISA off?
I'd argue there's no instructions left at that point...