> Am 09.01.2026 um 18:05 schrieb Stefan Schulze Frielinghaus
> <[email protected]>:
>
> From: Stefan Schulze Frielinghaus <[email protected]>
>
> Since stage 4 draws ever closer I'm posting this already. However,
> I'm not pushing this since it would break bootstrap. PR 122794 is
> basically fixed, I'm just awaiting green light. However, in the
> meantime another build problem showed up. This time while building
> libstdc++:
>
> cc1plus: warning: '-m31' is deprecated and support will be removed; use
> '-m64' instead [-Wdeprecated]
> /gcc/src/libstdc++-v3/src/c++98/compatibility.cc:392:4: error: 'void
> {anonymous}::_Y_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEl(...)'
> aliased to undefined symbol
> '_ZNSt13basic_istreamIwSt11char_traitsIwEE8ignoreXXEl'
> 392 | _Y##name(...) \
> | ^~
> /gcc/src/libstdc++-v3/src/c++98/compatibility.cc:403:31: note: in expansion
> of macro '_GLIBCXX_3_4_5_SYMVER'
> 403 | #define _GLIBCXX_APPLY_SYMVER _GLIBCXX_3_4_5_SYMVER
> | ^~~~~~~~~~~~~~~~~~~~~
> ...
>
> Without this patch, the build succeeds.
>
> Anyhow, in order to give users a chance to disable the warning, I went
> for -Wno-deprecated.
>
> Starting with Linux 6.19, compat syscalls will be removed. Furthermore,
> the next glibc release deprecates -m31 support. Therefore, the current
> plan for GCC is to also deprecate -m31 and emit a warning for GCC 16 and
> remove -m31 entirely for GCC 17.
>
> Any objections to this approach?
Maybe diagnose at configure time when not —disable-multilib? Or drop -m31 from
the default multilb set now, requiring explicit enablement? I find diagnostic
at each invocation quite intrusive.
Richard
>
> -- >8 --
>
> Support for -m31 is deprecated and support will be removed.
> ---
> gcc/config/s390/s390.cc | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/gcc/config/s390/s390.cc b/gcc/config/s390/s390.cc
> index 28a025be4e8..eba5a4ee6b6 100644
> --- a/gcc/config/s390/s390.cc
> +++ b/gcc/config/s390/s390.cc
> @@ -16711,6 +16711,10 @@ s390_option_override_internal (struct gcc_options
> *opts,
> }
> #endif
>
> + if (!TARGET_64BIT)
> + warning (OPT_Wdeprecated,
> + "%<-m31%> is deprecated and support will be removed; use %<-m64%>
> instead");
> +
> #ifdef TARGET_DEFAULT_LONG_DOUBLE_128
> if (!TARGET_LONG_DOUBLE_128_P (opts_set->x_target_flags))
> opts->x_target_flags |= MASK_LONG_DOUBLE_128;
> --
> 2.49.0
>