author | Alan Coopersmith <Alan.Coopersmith@Oracle.COM> |
Fri, 07 Oct 2016 22:43:37 -0700 | |
changeset 7203 | c08b4f974065 |
parent 7161 | 7a2bce2bb68a |
permissions | -rw-r--r-- |
5342
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
1 |
# |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
2 |
# As the comment mentions below, match the values-*.o that selects the libc |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
3 |
# behaviour for the C/C++ standard selected on the command line. |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
4 |
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=40411 |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
5 |
# |
7161
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
6 |
--- gcc-5.4.0/gcc/config/sol2.h.orig 2015-10-01 07:01:18.000000000 +0000 |
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
7 |
+++ gcc-5.4.0/gcc/config/sol2.h 2016-10-26 09:09:10.323357813 +0000 |
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
8 |
@@ -150,9 +150,34 @@ |
5342
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
9 |
#define MD_EXEC_PREFIX "/usr/ccs/bin/" |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
10 |
#endif |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
11 |
|
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
12 |
+/* Solaris libc and libm implement multiple behaviours for various interfaces |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
13 |
+ that have changed over the years in different versions of the standards. |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
14 |
+ The behaviour is controlled by linking corresponding values-*.o objects. |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
15 |
+ Each of these objects contain alternate defintions of one or more variables |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
16 |
+ that libc uses to select which conflicting behaviour it should exhibit. |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
17 |
+ There are two sets of these objects, values-X*.o and values-xpg*.o. |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
18 |
+ |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
19 |
+ The values-X*.o objects set the variable _lib_version to one of strict_ansi, |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
20 |
+ ansi_1, or c_issue_4. Ignoring '-Xt' and '-Xs', unless '-Xc' is used with |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
21 |
+ the Solaris Studio C/C++ compilers, it appears that values-Xa.o is linked |
7161
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
22 |
+ into resulting executable program regardless of which '-std=' setting is |
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
23 |
+ selected. |
5342
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
24 |
+ |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
25 |
+ The values-xpg*.o objects define one or more __xpg* variables. No |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
26 |
+ values-xpg*.o object is linked in unless the equivalent of '-std=c99|c11' |
7161
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
27 |
+ is used during the linking of an executable program. In either of those |
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
28 |
+ cases, values-xpg6.o is linked. |
5342
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
29 |
+ |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
30 |
+ The below spec string is reasonably consistent with that behaviour. */ |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
31 |
#undef STARTFILE_ARCH_SPEC |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
32 |
-#define STARTFILE_ARCH_SPEC "%{ansi:values-Xc.o%s} \ |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
33 |
- %{!ansi:values-Xa.o%s}" |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
34 |
+#define STARTFILE_ARCH_SPEC \ |
7161
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
35 |
+ "%{!shared:%{!symbolic: \ |
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
36 |
+ %{ansi:values-Xc.o%s; :values-Xa.o%s} \ |
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
37 |
+ %{std=c99|std=c9x|std=gnu99|std=gnu9x:values-xpg6.o%s} \ |
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
38 |
+ %{std=c11|std=c1x|std=gnu11|std=gnu1x:values-xpg6.o%s} \ |
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
39 |
+ %{std=c++11|std=c++0x|std=gnu++11|std=gnu++0x:values-xpg6.o%s} \ |
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
40 |
+ %{std=c++14|std=c++1y|std=gnu++14|std=gnu++1y:values-xpg6.o%s} \ |
7a2bce2bb68a
24957005 gcc5 should only link values-*.o into executable programs
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
6859
diff
changeset
|
41 |
+ %{std=c++1z|std=gnu++1z:values-xpg6.o%s}}}" |
5342
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
42 |
|
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
43 |
#if defined(HAVE_LD_PIE) && defined(HAVE_SOLARIS_CRTS) |
e55d87e99ecd
PSARC/2015/499 GCC v5.3, v4.9.3, and more
Norm Jacobs <Norm.Jacobs@Oracle.COM>
parents:
diff
changeset
|
44 |
#define STARTFILE_CRTBEGIN_SPEC "%{shared|pie:crtbeginS.o%s;:crtbegin.o%s}" |