This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[PATCH 2/2] Disable .gnu_attribute tags in compatibility-ldbl.o
- From: Alan Modra <amodra at gmail dot com>
- To: gcc-patches at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org
- Cc: Segher Boessenkool <segher at kernel dot crashing dot org>
- Date: Wed, 28 Sep 2016 10:43:38 +0930
- Subject: [PATCH 2/2] Disable .gnu_attribute tags in compatibility-ldbl.o
- Authentication-results: sourceware.org; auth=none
- References: <20160928011145.GF3336@bubble.grove.modra.org>
compatibility-ldbl.o is compiled with -mlong-double-64. When
long double .gnu_attribute tags are checked by the linker, it
complains about the mismatch between this file and others in
libstdc++.
Bootstrapped and regression tested powerpc64le-linux and
powerpc64-linux biarch. OK to apply?
* configure.ac (LONG_DOUBLE_COMPAT_FLAGS): New ACSUBST.
* src/Makefile.am (compatibility-ldbl.o, compatibility-ldbl.lo):
Use LONG_DOUBLE_COMPAT_FLAGS.
* Makefile.in: Regenerate.
* configure: Regenerate.
* doc/Makefile.in: Regenerate.
* include/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* python/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* src/c++11/Makefile.in: Regenerate.
* src/c++98/Makefile.in: Regenerate.
* src/filesystem/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index baf605c..4a5de8c 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -375,6 +375,7 @@ GLIBCXX_ENABLE_LIBSTDCXX_DUAL_ABI([yes])
GLIBCXX_DEFAULT_ABI
ac_ldbl_compat=no
+LONG_DOUBLE_COMPAT_FLAGS="-mlong-double-64"
case "$target" in
powerpc*-*-linux* | \
sparc*-*-linux* | \
@@ -389,8 +390,13 @@ case "$target" in
AC_DEFINE([_GLIBCXX_LONG_DOUBLE_COMPAT],1,
[Define if compatibility should be provided for -mlong-double-64.])
port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver"
+ case "$target" in
+ powerpc*-*-linux*)
+ LONG_DOUBLE_COMPAT_FLAGS="$LONG_DOUBLE_COMPAT_FLAGS -mno-gnu-attr" ;;
+ esac
fi
esac
+AC_SUBST(LONG_DOUBLE_COMPAT_FLAGS)
GLIBCXX_CONDITIONAL(GLIBCXX_LDBL_COMPAT, test $ac_ldbl_compat = yes)
# Check if assembler supports disabling hardware capability support.
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am
index 00a6168..d9830c2 100644
--- a/libstdc++-v3/src/Makefile.am
+++ b/libstdc++-v3/src/Makefile.am
@@ -109,9 +109,9 @@ libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS)
# pass -mlong-double-64.
if GLIBCXX_LDBL_COMPAT
compatibility-ldbl.lo: compatibility-ldbl.cc
- $(LTCXXCOMPILE) -mlong-double-64 -c $<
+ $(LTCXXCOMPILE) $(LONG_DOUBLE_COMPAT_FLAGS) -c $<
compatibility-ldbl.o: compatibility-ldbl.cc
- $(CXXCOMPILE) -mlong-double-64 -c $<
+ $(CXXCOMPILE) $(LONG_DOUBLE_COMPAT_FLAGS) -c $<
endif
# Use special rules for C++11 files/objects.
--
Alan Modra
Australia Development Lab, IBM