On Fri, 13 Jan 2023, Richard Biener wrote:

> Don't add crtfastmath.o for -shared to avoid altering the FP
> environment when loading a shared library.

Ping.

>       PR target/55522
>       * config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
>       for -shared.
>       * config/sparc/linux.h (ENDFILE_SPEC): Likewise.
>       * config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
>       * config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
>       * config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
> ---
>  gcc/config/sparc/freebsd.h  | 2 +-
>  gcc/config/sparc/linux.h    | 2 +-
>  gcc/config/sparc/linux64.h  | 2 +-
>  gcc/config/sparc/sp-elf.h   | 2 +-
>  gcc/config/sparc/sp64-elf.h | 2 +-
>  5 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/gcc/config/sparc/freebsd.h b/gcc/config/sparc/freebsd.h
> index 73850a31f58..a5aa3679547 100644
> --- a/gcc/config/sparc/freebsd.h
> +++ b/gcc/config/sparc/freebsd.h
> @@ -127,7 +127,7 @@ along with GCC; see the file COPYING3.  If not see
>  
>  #undef ENDFILE_SPEC
>  #define ENDFILE_SPEC                                         \
> -  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} "  \
> +  "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} 
> "       \
>    FBSD_ENDFILE_SPEC
>  
>  /* We use GNU ld so undefine this so that attribute((init_priority)) works.  
> */
> diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h
> index 6a809e9092d..48386884d05 100644
> --- a/gcc/config/sparc/linux.h
> +++ b/gcc/config/sparc/linux.h
> @@ -30,7 +30,7 @@ along with GCC; see the file COPYING3.  If not see
>  #undef  ENDFILE_SPEC
>  #define ENDFILE_SPEC \
>    GNU_USER_TARGET_ENDFILE_SPEC \
> -  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
> +  "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}"
>  
>  /* -mcpu=native handling only makes sense with compiler running on
>     a SPARC chip.  */
> diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h
> index d08a2ef96fe..4132cee4c8c 100644
> --- a/gcc/config/sparc/linux64.h
> +++ b/gcc/config/sparc/linux64.h
> @@ -47,7 +47,7 @@ along with GCC; see the file COPYING3.  If not see
>  #undef       ENDFILE_SPEC
>  #define ENDFILE_SPEC \
>    GNU_USER_TARGET_ENDFILE_SPEC \
> -  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
> +  "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}"
>  
>  /* The default code model.  */
>  #undef SPARC_DEFAULT_CMODEL
> diff --git a/gcc/config/sparc/sp-elf.h b/gcc/config/sparc/sp-elf.h
> index 53f03b951db..8bd2f54f05d 100644
> --- a/gcc/config/sparc/sp-elf.h
> +++ b/gcc/config/sparc/sp-elf.h
> @@ -32,7 +32,7 @@ along with GCC; see the file COPYING3.  If not see
>  
>  #undef ENDFILE_SPEC
>  #define ENDFILE_SPEC \
> -  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
> +  "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} 
> \
>     crtend.o%s crtn.o%s"
>  
>  /* Don't set the target flags, this is done by the linker script */
> diff --git a/gcc/config/sparc/sp64-elf.h b/gcc/config/sparc/sp64-elf.h
> index dc918c6ae24..866db10a343 100644
> --- a/gcc/config/sparc/sp64-elf.h
> +++ b/gcc/config/sparc/sp64-elf.h
> @@ -44,7 +44,7 @@ along with GCC; see the file COPYING3.  If not see
>  
>  #undef ENDFILE_SPEC
>  #define ENDFILE_SPEC \
> -  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
> +  "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} 
> \
>     crtend.o%s crtn.o%s"
>  
>  /* Use the default (for now).  */
> 

-- 
Richard Biener <rguent...@suse.de>
SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg,
Germany; GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman;
HRB 36809 (AG Nuernberg)

Reply via email to