diff options
author | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2018-01-12 09:52:53 +0000 |
---|---|---|
committer | Rainer Orth <ro@gcc.gnu.org> | 2018-01-12 09:52:53 +0000 |
commit | c969e34e3fe457d60c4220554fa3c81d2bdae91b (patch) | |
tree | a4878f25e329b0be127c17901442243f07da7f73 | |
parent | a7448bdfbcce56b44a6f3b3cbdc6add9a0b9d6bd (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/sol2.h | 29 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/execute_command_line_2.f90 | 1 | ||||
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc | 1 |
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 |