components/gcc5/patches/002-libc-values.patch
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--
21866045 move /etc/pam.d/gdm-autologin from system/core-os to system/display-manager/gdm
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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}"