This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[arm] Fix architecture selection when building libatomic with automatic FPU selection
- From: "Richard Earnshaw (lists)" <Richard dot Earnshaw at arm dot com>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 20 Oct 2017 13:37:07 +0100
- Subject: [arm] Fix architecture selection when building libatomic with automatic FPU selection
- Authentication-results: sourceware.org; auth=none
Libatomic builds a few functions for Arm with an explicit -march option.
This option does not specify an FPU, which can lead to problems when
targeting a hard-float or softfp environment since the architecture
appears to be incompatible with the selected ABI. This is some fallout
from the move to making the FPU be automatically detected from the
CPU/architecture.
The fix is simple enough, just add +fp (the minimum floating point
option) to the architecture. We don't use anything from the FP
architecture, so it shouldn't really change anything; and if we are
building for -mfloat-abi=soft the canonicalization process will remove
the unnecessary fp attributes anyway. +fp is essentially the same as
the previous default behaviour of defaulting to the base FP architecture
in these circumstances.
* Makefile.am: (IFUNC_OPTIONS): Set the architecture to
-march=armv7-a+fp on Linux/Arm.
* Makefile.in: Regenerated.
Committed to trunk.
diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am
index d731406..9c45700 100644
--- a/libatomic/Makefile.am
+++ b/libatomic/Makefile.am
@@ -123,7 +123,7 @@ libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix _$(s)_.lo,$(SIZEOBJS)))
## On a target-specific basis, include alternates to be selected by IFUNC.
if HAVE_IFUNC
if ARCH_ARM_LINUX
-IFUNC_OPTIONS = -march=armv7-a -DHAVE_KERNEL64
+IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
libatomic_la_LIBADD += $(foreach s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS)))
libatomic_la_LIBADD += $(addsuffix _8_2_.lo,$(SIZEOBJS))
endif
diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
index f6eeab3..0f0382e 100644
--- a/libatomic/Makefile.in
+++ b/libatomic/Makefile.in
@@ -346,7 +346,7 @@ M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files)))
libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \
_$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_2) \
$(am__append_3)
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv7-a -DHAVE_KERNEL64
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=i586
@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -mcx16
libatomic_convenience_la_SOURCES = $(libatomic_la_SOURCES)