On Thu, Dec 15, 2022 at 7:23 AM liuhongt <hongtao....@intel.com> wrote: > > Update in V2: > Split -shared change into a separate commit and add some documentation > for it. > Bootstrapped and regtested on x86_64-pc-linu-gnu{-m32,}. > Ok of trunk? > > Don't add crtfastmath.o for -shared to avoid changing the MXCSR register > when loading a shared library. crtfastmath.o will be used only when > building executables. > > PR target/55522 > * config/i386/gnu-user-common.h (GNU_USER_TARGET_MATHFILE_SPEC): > Don't add crtfastmath.o for -shared. > * doc/invoke.texi (-shared): Add related documentation.
OK. Thanks, Uros. > --- > gcc/config/i386/gnu-user-common.h | 2 +- > gcc/doc/invoke.texi | 3 ++- > 2 files changed, 3 insertions(+), 2 deletions(-) > > diff --git a/gcc/config/i386/gnu-user-common.h > b/gcc/config/i386/gnu-user-common.h > index cab9be2bfb7..9910cd64363 100644 > --- a/gcc/config/i386/gnu-user-common.h > +++ b/gcc/config/i386/gnu-user-common.h > @@ -47,7 +47,7 @@ along with GCC; see the file COPYING3. If not see > > /* Similar to standard GNU userspace, but adding -ffast-math support. */ > #define GNU_USER_TARGET_MATHFILE_SPEC \ > - "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \ > + "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} > \ > %{mpc32:crtprec32.o%s} \ > %{mpc64:crtprec64.o%s} \ > %{mpc80:crtprec80.o%s}" > diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi > index cb40b38b73a..cba4f19f4f4 100644 > --- a/gcc/doc/invoke.texi > +++ b/gcc/doc/invoke.texi > @@ -17656,7 +17656,8 @@ needs to build supplementary stub code for > constructors to work. On > multi-libbed systems, @samp{gcc -shared} must select the correct support > libraries to link against. Failing to supply the correct flags may lead > to subtle defects. Supplying them in cases where they are not necessary > -is innocuous.} > +is innocuous. For x86, crtfastmath.o will not be added when > +@option{-shared} is specified. } > > @item -shared-libgcc > @itemx -static-libgcc > -- > 2.27.0 >