RFR: 8366777: Build fails unknown pseudo-op with old AS on linux-aarch64 [v13]

Erik Joelsson erikj at openjdk.org
Fri Sep 12 13:13:41 UTC 2025


On Fri, 12 Sep 2025 06:57:44 GMT, SendaoYan <syan at openjdk.org> wrote:

>> make/autoconf/flags-other.m4 line 167:
>> 
>>> 165:     fi
>>> 166:     CFLAGS="$OLD_CFLAGS"
>>> 167:     AC_LANG_POP(C)
>> 
>> This part should be included in the `IF_ENABLED` block in `UTIL_ARG_ENABLE`.
>
> The `FLAGS_COMPILER_CHECK_ARGUMENTS` macro seem do not work normally in `IF_ENABLED:` block. The 'bash configure' command report "Internal error: Argument DEFAULT to UTIL_ARG_ENABLE can only be true, false or auto, was: ARG_DEFAULT". Below is the implementation.
> 
> Even though I add `PREFIX: BUILD_` or `PREFIX: ` argument to `FLAGS_COMPILER_CHECK_ARGUMENTS` it still report the same error.
> 
> 
> AC_DEFUN([FLAGS_SETUP_SVE],
> [
>   UTIL_ARG_ENABLE(NAME: aarch64-sve, DEFAULT: auto,
>     RESULT: AARCH64_SVE_ENABLED,
>     DESC: [Use SVE when compiling libsleef],
>     AVAILABLE: false,
>     CHECK_AVAILABLE: [
>       # Apple Silicon does not support SVE; use macOS as a proxy for that check.
>       if test "x$OPENJDK_TARGET_CPU" = "xaarch64" && test "x$OPENJDK_TARGET_OS" = "xlinux"; then
>         if test "x$TOOLCHAIN_TYPE" = xgcc || test "x$TOOLCHAIN_TYPE" = xclang; then
>           # check the compiler and binutils support sve or not
>           AC_MSG_CHECKING([if Arm SVE ACLE is supported])
>           AC_LANG_PUSH([C])
>           saved_cflags="$CFLAGS"
>           saved_cc="$CC"
>           CFLAGS="$CFLAGS -march=armv8-a+sve $CFLAGS_WARNINGS_ARE_ERRORS ARG_ARGUMENT"
>           CC="$ARG_PREFIX[CC]"
>           AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
>             [
>               #include <arm_sve.h>
>               svfloat64_t a() {}
>             ],
>             [
>               svint32_t r = svdup_n_s32(1)
>             ])],
>             [AVAILABLE=true],
>             [AVAILABLE=false]
>           )
>           AC_MSG_RESULT([$AVAILABLE])
>           CC="$saved_cc"
>           CFLAGS="$saved_cflags"
>           AC_LANG_POP([C])
>         fi
>       fi
>     ],
>     IF_ENABLED: [
>       SVE_CFLAGS="-march=armv8-a+sve"
>       # Switching the initialization mode with gcc from 'pattern' to 'zero'
>       # avoids the use of unsupported `__builtin_clear_padding` for variable
>       # length aggregates
>       if test "x$DEBUG_LEVEL" != xrelease && test "x$TOOLCHAIN_TYPE" = xgcc ; then
>         AC_MSG_CHECKING([Switching the initialization mode with gcc from pattern to zero])
>         INIT_ZERO_FLAG="-ftrivial-auto-var-init=zero"
>         FLAGS_COMPILER_CHECK_ARGUMENTS(ARGUMENT: [$INIT_ZERO_FLAG],
>           IF_TRUE: [SVE_CFLAGS="${SVE_CFLAGS} $INIT_ZERO_FLAG"])
>       fi
>     ]
>     )
>   AC_SUBST(SVE_CFLAGS)
> ])
> 
> 
> [default.log](https://github.com/user-attachments/files/22293047/default.log)

That's a valid reason not to do it. Seems like there is some issue with nesting calls to our named parameter macros.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/27073#discussion_r2344215834


More information about the build-dev mailing list