aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2018-01-12 09:52:53 +0000
committerRainer Orth <ro@gcc.gnu.org>2018-01-12 09:52:53 +0000
commitc969e34e3fe457d60c4220554fa3c81d2bdae91b (patch)
treea4878f25e329b0be127c17901442243f07da7f73
parenta7448bdfbcce56b44a6f3b3cbdc6add9a0b9d6bd (diff)
downloadgcc-c969e34e3fe457d60c4220554fa3c81d2bdae91b.zip
gcc-c969e34e3fe457d60c4220554fa3c81d2bdae91b.tar.gz
gcc-c969e34e3fe457d60c4220554fa3c81d2bdae91b.tar.bz2
Link with correct values-*.o files on Solaris (PR target/40411)
gcc/testsuite: PR libfortran/67412 * gfortran.dg/execute_command_line_2.f90: Remove dg-xfail-run-if on *-*-solaris2.10. libstdc++-v3: PR libstdc++/64054 * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc: Remove dg-xfail-run-if. gcc: PR target/40411 * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or -symbolic. Use values-Xc.o for -pedantic. Link with values-xpg4.o for C90, values-xpg6.o otherwise. From-SVN: r256568
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/sol2.h29
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/execute_command_line_2.f901
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc1
6 files changed, 47 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5ed1111..36e8aa8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR target/40411
+ * config/sol2.h (STARTFILE_ARCH_SPEC): Don't use with -shared or
+ -symbolic.
+ Use values-Xc.o for -pedantic.
+ Link with values-xpg4.o for C90, values-xpg6.o otherwise.
+
2018-01-12 Martin Liska <mliska@suse.cz>
PR ipa/83054
diff --git a/gcc/config/sol2.h b/gcc/config/sol2.h
index 1681313..f296cf5 100644
--- a/gcc/config/sol2.h
+++ b/gcc/config/sol2.h
@@ -169,9 +169,34 @@ along with GCC; see the file COPYING3. If not see
#undef SUPPORTS_INIT_PRIORITY
#define SUPPORTS_INIT_PRIORITY HAVE_INITFINI_ARRAY_SUPPORT
+/* Solaris libc and libm implement multiple behaviours for various
+ interfaces that have changed over the years in different versions of the
+ C standard. The behaviour is controlled by linking corresponding
+ values-*.o objects. Each of these objects contain alternate definitions
+ of one or more variables that the libraries use to select which
+ conflicting behaviour they should exhibit. There are two sets of these
+ objects, values-X*.o and values-xpg*.o.
+
+ The values-X[ac].o objects set the variable _lib_version. The Studio C
+ compilers use values-Xc.o with either -Xc or (since Studio 12.6)
+ -pedantic to select strictly conformant ISO C behaviour, otherwise
+ values-Xa.o.
+
+ The values-xpg[46].o objects define either or both __xpg[46] variables,
+ selecting XPG4 mode (__xpg4) and conforming C99/SUSv3 behavior (__xpg6).
+
+ Since GCC 5, gcc defaults to -std=gnu11 or higher, so we link
+ values-xpg6.o to get C99 semantics. Besides, most of the runtime
+ libraries always require C99 semantics.
+
+ Since only one instance of _lib_version and __xpg[46] takes effekt (the
+ first in ld.so.1's search path), we only link the values-*.o files into
+ executable programs. */
#undef STARTFILE_ARCH_SPEC
-#define STARTFILE_ARCH_SPEC "%{ansi:values-Xc.o%s} \
- %{!ansi:values-Xa.o%s}"
+#define STARTFILE_ARCH_SPEC \
+ "%{!shared:%{!symbolic: \
+ %{pedantic:values-Xc.o%s; :values-Xa.o%s} \
+ %{std=c90|std=gnu90:values-xpg4.o%s; :values-xpg6.o%s}}}"
#if defined(HAVE_LD_PIE) && defined(HAVE_SOLARIS_CRTS)
#define STARTFILE_CRTBEGIN_SPEC "%{static:crtbegin.o%s; \
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fa0c2f1..017281d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,11 @@
2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+ PR libfortran/67412
+ * gfortran.dg/execute_command_line_2.f90: Remove dg-xfail-run-if
+ on *-*-solaris2.10.
+
+2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
* lib/target-supports.exp (check_effective_target_branch_cost):
Accept all x86 targets.
diff --git a/gcc/testsuite/gfortran.dg/execute_command_line_2.f90 b/gcc/testsuite/gfortran.dg/execute_command_line_2.f90
index 3e34f32..5a4e9cc 100644
--- a/gcc/testsuite/gfortran.dg/execute_command_line_2.f90
+++ b/gcc/testsuite/gfortran.dg/execute_command_line_2.f90
@@ -1,5 +1,4 @@
! { dg-do run }
-! { dg-xfail-run-if "PR libfortran/67412" { *-*-solaris2.10 } }
!
! Check that EXECUTE_COMMAND_LINE handles invalid command lines appropriately
!
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 46908d3..01963be 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2018-01-12 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR libstdc++/64054
+ * testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc:
+ Remove dg-xfail-run-if.
+
2018-01-10 François Dumont <fdumont@gcc.gnu.org>
* include/bits/forward_list.h
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
index 7c1dde9..f71551b 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
@@ -1,6 +1,5 @@
// { dg-do run { target c++11 } }
// { dg-require-string-conversions "" }
-// { dg-xfail-run-if "PR libstdc++/64054" { *-*-solaris* } }
// { dg-xfail-run-if "broken long double IO" { newlib_broken_long_double_io } }
// 2014-03-27 Rüdiger Sonderfeld