RFR: 8366777: Build fails unknown pseudo-op with old AS on linux-aarch64
Aleksey Shipilev
shade at openjdk.org
Wed Sep 3 14:53:48 UTC 2025
On Wed, 3 Sep 2025 14:35:44 GMT, SendaoYan <syan at openjdk.org> wrote:
> Hi all,
>
> Build jdk on linux-aarch64 with older assembler version(as 2.30) will report compilation failre, shows as [JDK-8366777](https://bugs.openjdk.org/browse/JDK-8366777).
>
> This PR add the expression `svfloat64_t a() {}` to makefile which will trigger the compilation during configure stage. After this PR, at configure stage will check the gcc and assember support `-march=armv8-a+sve` or not more comprehensive.
>
> Testing:
> - [x] On linux-aarch64 gcc12.3.1 as2.37, configure set SVE_CFLAGS as '-march=armv8-a+sve'
> - [x] On linux-aarch64 gcc10.3.0 as2.30, configure set SVE_CFLAGS as empty
>
>
> The compilation fails demo as below:
>
>
> # cat sve.c
> #include <arm_sve.h>
> svfloat64_t a() {}
> # gcc -march=armv8-a+sve sve.c
> /tmp/ccVOzMzb.s: Assembler messages:
> /tmp/ccVOzMzb.s:6: Error: unknown pseudo-op: `.variant_pcs'
We have seen this with [JDK-8343751](https://bugs.openjdk.org/browse/JDK-8343751) as well, and reasoned the GCC+Binutils combination was incompatible: too modern GCC and too old Binutils. In our case, it was the old crosstools-ng generated toolchain. Have you seen this on some standard toolchain?
Anyhow, I believe that failing the build is far better behavior than silently disabling SVE!
-------------
PR Comment: https://git.openjdk.org/jdk/pull/27073#issuecomment-3249591983
More information about the build-dev
mailing list