[3/9] arm: Don't add crtfastmath.o for -shared

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

Commit Message

Richard Biener Jan. 13, 2023, 8 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/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
	crtfastmath.o for -shared.
	* config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
---
 gcc/config/arm/linux-eabi.h  | 2 +-
 gcc/config/arm/unknown-elf.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
  

Comments

Richard Earnshaw Jan. 13, 2023, 10:53 a.m. UTC | #1
On 13/01/2023 08:00, 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/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
> 	crtfastmath.o for -shared.
> 	* config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.

OK.

R.

> ---
>   gcc/config/arm/linux-eabi.h  | 2 +-
>   gcc/config/arm/unknown-elf.h | 2 +-
>   2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
> index 57f830f0176..a119875599d 100644
> --- a/gcc/config/arm/linux-eabi.h
> +++ b/gcc/config/arm/linux-eabi.h
> @@ -121,7 +121,7 @@
>   
>   #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}} "	\
>     LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
>   
>   /* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we
> diff --git a/gcc/config/arm/unknown-elf.h b/gcc/config/arm/unknown-elf.h
> index 464d38b6cc6..397ac3f68b9 100644
> --- a/gcc/config/arm/unknown-elf.h
> +++ b/gcc/config/arm/unknown-elf.h
> @@ -33,7 +33,7 @@
>   
>   #undef  STARTFILE_SPEC
>   #define STARTFILE_SPEC	\
> -  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} "	\
> +  "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} "	\
>     UNKNOWN_ELF_STARTFILE_SPEC
>   
>   #define UNKNOWN_ELF_ENDFILE_SPEC	"crtend%O%s crtn%O%s"
  

Patch

diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
index 57f830f0176..a119875599d 100644
--- a/gcc/config/arm/linux-eabi.h
+++ b/gcc/config/arm/linux-eabi.h
@@ -121,7 +121,7 @@ 
 
 #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}} "	\
   LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
 
 /* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we
diff --git a/gcc/config/arm/unknown-elf.h b/gcc/config/arm/unknown-elf.h
index 464d38b6cc6..397ac3f68b9 100644
--- a/gcc/config/arm/unknown-elf.h
+++ b/gcc/config/arm/unknown-elf.h
@@ -33,7 +33,7 @@ 
 
 #undef  STARTFILE_SPEC
 #define STARTFILE_SPEC	\
-  "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} "	\
+  "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} "	\
   UNKNOWN_ELF_STARTFILE_SPEC
 
 #define UNKNOWN_ELF_ENDFILE_SPEC	"crtend%O%s crtn%O%s"