[1/9] aarch64: Don't add crtfastmath.o for -shared

Message ID 20230113075953.34CCB13913@imap2.suse-dmz.suse.de
State Committed
Commit 0bf7131e539de4ca66b3c0eb72aa0afbd8f006dc
Delegated to: Richard Earnshaw
Headers
Series [1/9] aarch64: Don't add crtfastmath.o for -shared |

Commit Message

Richard Biener Jan. 13, 2023, 7:59 a.m. UTC
  Don't add crtfastmath.o for -shared to avoid altering the FP
environment when loading a shared library.

	PR target/55522
	* config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
	crtfastmath.o for -shared.
	* config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
	Likewise.
	* config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
	Likewise.
---
 gcc/config/aarch64/aarch64-elf-raw.h | 2 +-
 gcc/config/aarch64/aarch64-freebsd.h | 2 +-
 gcc/config/aarch64/aarch64-linux.h   | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)
  

Comments

Richard Earnshaw Jan. 13, 2023, 10:49 a.m. UTC | #1
On 13/01/2023 07:59, Richard Biener via Gcc-patches wrote:
> Don't add crtfastmath.o for -shared to avoid altering the FP
> environment when loading a shared library.
> 
> 	PR target/55522
> 	* config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
> 	crtfastmath.o for -shared.
> 	* config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
> 	Likewise.
> 	* config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
> 	Likewise.
> ---
>   gcc/config/aarch64/aarch64-elf-raw.h | 2 +-
>   gcc/config/aarch64/aarch64-freebsd.h | 2 +-
>   gcc/config/aarch64/aarch64-linux.h   | 2 +-
>   3 files changed, 3 insertions(+), 3 deletions(-)
> 

OK.

R.

> diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h
> index d4d820a9d54..fa5b4527ea0 100644
> --- a/gcc/config/aarch64/aarch64-elf-raw.h
> +++ b/gcc/config/aarch64/aarch64-elf-raw.h
> @@ -25,7 +25,7 @@
>   #define STARTFILE_SPEC " crti%O%s crtbegin%O%s crt0%O%s"
>   #define ENDFILE_SPEC \
>     " crtend%O%s crtn%O%s " \
> -  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
> +  "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}"
>   
>   #ifndef LINK_SPEC
>   #define LINK_SPEC "%{h*}			\
> diff --git a/gcc/config/aarch64/aarch64-freebsd.h b/gcc/config/aarch64/aarch64-freebsd.h
> index 13beb3781b6..2cf9cf6f046 100644
> --- a/gcc/config/aarch64/aarch64-freebsd.h
> +++ b/gcc/config/aarch64/aarch64-freebsd.h
> @@ -50,7 +50,7 @@
>   #define LINK_SPEC FBSD_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC
>   
>   #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}}"
>   
>   #undef ENDFILE_SPEC
>   #define ENDFILE_SPEC \
> diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
> index 5e4553d79f5..61ed4067fc5 100644
> --- a/gcc/config/aarch64/aarch64-linux.h
> +++ b/gcc/config/aarch64/aarch64-linux.h
> @@ -50,7 +50,7 @@
>   #define LINK_SPEC LINUX_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC
>   
>   #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}}"
>   
>   #undef ENDFILE_SPEC
>   #define ENDFILE_SPEC   \
  

Patch

diff --git a/gcc/config/aarch64/aarch64-elf-raw.h b/gcc/config/aarch64/aarch64-elf-raw.h
index d4d820a9d54..fa5b4527ea0 100644
--- a/gcc/config/aarch64/aarch64-elf-raw.h
+++ b/gcc/config/aarch64/aarch64-elf-raw.h
@@ -25,7 +25,7 @@ 
 #define STARTFILE_SPEC " crti%O%s crtbegin%O%s crt0%O%s"
 #define ENDFILE_SPEC \
   " crtend%O%s crtn%O%s " \
-  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
+  "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}"
 
 #ifndef LINK_SPEC
 #define LINK_SPEC "%{h*}			\
diff --git a/gcc/config/aarch64/aarch64-freebsd.h b/gcc/config/aarch64/aarch64-freebsd.h
index 13beb3781b6..2cf9cf6f046 100644
--- a/gcc/config/aarch64/aarch64-freebsd.h
+++ b/gcc/config/aarch64/aarch64-freebsd.h
@@ -50,7 +50,7 @@ 
 #define LINK_SPEC FBSD_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC
 
 #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}}"
 
 #undef ENDFILE_SPEC
 #define ENDFILE_SPEC \
diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
index 5e4553d79f5..61ed4067fc5 100644
--- a/gcc/config/aarch64/aarch64-linux.h
+++ b/gcc/config/aarch64/aarch64-linux.h
@@ -50,7 +50,7 @@ 
 #define LINK_SPEC LINUX_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC
 
 #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}}"
 
 #undef ENDFILE_SPEC
 #define ENDFILE_SPEC   \