<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[136924] trunk/dports/lang</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="https://trac.macports.org/changeset/136924">136924</a></dd>
<dt>Author</dt> <dd>larryv@macports.org</dd>
<dt>Date</dt> <dd>2015-05-29 22:05:09 -0700 (Fri, 29 May 2015)</dd>
</dl>
<h3>Log Message</h3>
<pre>gcc47: Backport upstream fix for handling deployment targets
Replace my earlier patch for upstream PR target/63810 (MacPorts <a href="https://trac.macports.org/changeset/128373">r128373</a>)
with the one applied to trunk (GCC <a href="https://trac.macports.org/changeset/223808">r223808</a>). Split out the kernel
version check removal into its own patch, and remove surrounding changes
that have nothing to do with OS versioning. Revbump DragonEgg ports as
appropriate.
https://gcc.gnu.org/viewcvs/gcc?limit_changes=0&view=rev&rev=223808</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkdportslangdragonegg33Portfile">trunk/dports/lang/dragonegg-3.3/Portfile</a></li>
<li><a href="#trunkdportslangdragonegg34Portfile">trunk/dports/lang/dragonegg-3.4/Portfile</a></li>
<li><a href="#trunkdportslanggcc47Portfile">trunk/dports/lang/gcc47/Portfile</a></li>
<li><a href="#trunkdportslanggcc47filesmacosxversionminpatch">trunk/dports/lang/gcc47/files/macosx-version-min.patch</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkdportslanggcc47filesremovekernelversioncheckpatch">trunk/dports/lang/gcc47/files/remove-kernel-version-check.patch</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkdportslangdragonegg33Portfile"></a>
<div class="modfile"><h4>Modified: trunk/dports/lang/dragonegg-3.3/Portfile (136923 => 136924)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/lang/dragonegg-3.3/Portfile        2015-05-30 03:40:09 UTC (rev 136923)
+++ trunk/dports/lang/dragonegg-3.3/Portfile        2015-05-30 05:05:09 UTC (rev 136924)
</span><span class="lines">@@ -19,7 +19,7 @@
</span><span class="cx"> set gcc_version_no_dot 46
</span><span class="cx"> }
</span><span class="cx"> subport ${name}-gcc-4.7 {
</span><del>- revision 9
</del><ins>+ revision 10
</ins><span class="cx"> set gcc_version 4.7
</span><span class="cx"> set gcc_version_no_dot 47
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkdportslangdragonegg34Portfile"></a>
<div class="modfile"><h4>Modified: trunk/dports/lang/dragonegg-3.4/Portfile (136923 => 136924)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/lang/dragonegg-3.4/Portfile        2015-05-30 03:40:09 UTC (rev 136923)
+++ trunk/dports/lang/dragonegg-3.4/Portfile        2015-05-30 05:05:09 UTC (rev 136924)
</span><span class="lines">@@ -19,7 +19,7 @@
</span><span class="cx"> set gcc_version_no_dot 46
</span><span class="cx"> }
</span><span class="cx"> subport ${name}-gcc-4.7 {
</span><del>- revision 5
</del><ins>+ revision 6
</ins><span class="cx"> set gcc_version 4.7
</span><span class="cx"> set gcc_version_no_dot 47
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkdportslanggcc47Portfile"></a>
<div class="modfile"><h4>Modified: trunk/dports/lang/gcc47/Portfile (136923 => 136924)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/lang/gcc47/Portfile        2015-05-30 03:40:09 UTC (rev 136923)
+++ trunk/dports/lang/gcc47/Portfile        2015-05-30 05:05:09 UTC (rev 136924)
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx">
</span><span class="cx"> # Whenever this port is bumped for version/revision, please revbump dragonegg-*-gcc-4.7
</span><span class="cx"> version 4.7.4
</span><del>-revision 4
</del><ins>+revision 5
</ins><span class="cx"> platforms darwin
</span><span class="cx"> categories lang
</span><span class="cx"> maintainers mww openmaintainer
</span><span class="lines">@@ -64,6 +64,10 @@
</span><span class="cx">
</span><span class="cx"> patchfiles ppc_fde_encoding.diff
</span><span class="cx">
</span><ins>+# Don't check Darwin kernel version (GCC PR target/61407
+# <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407>).
+patchfiles-append remove-kernel-version-check.patch
+
</ins><span class="cx"> # Handle OS X deployment targets correctly (GCC PR target/63810
</span><span class="cx"> # <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810>).
</span><span class="cx"> patchfiles-append macosx-version-min.patch
</span></span></pre></div>
<a id="trunkdportslanggcc47filesmacosxversionminpatch"></a>
<div class="modfile"><h4>Modified: trunk/dports/lang/gcc47/files/macosx-version-min.patch (136923 => 136924)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/lang/gcc47/files/macosx-version-min.patch        2015-05-30 03:40:09 UTC (rev 136923)
+++ trunk/dports/lang/gcc47/files/macosx-version-min.patch        2015-05-30 05:05:09 UTC (rev 136924)
</span><span class="lines">@@ -1,8 +1,76 @@
</span><del>-Index: gcc/config/darwin-c.c
-===================================================================
---- gcc/config/darwin-c.c.orig
</del><ins>+commit 9b0d3d17b04a59bb591c06273d2d5a975f8c5d58
+Author: Lawrence Velázquez <vq@larryv.me>
+Date: Fri Nov 14 17:52:32 2014 -0500
+
+ Handle OS X deployment targets correctly
+
+ As described in PR target/63810, this addresses several problems with
+ the validation and encoding of deployment target version strings for the
+ __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro. There are
+ currently four testcases exercising inputs to -mmacosx-version-min
+ (gcc/testsuite/gcc.dg/darwin-minversion-*), but they provide minimal
+ coverage, and one is incorrect.
+
+ * The tiny number is now respected, if present. Thus "10.9.4"
+ correctly becomes "1094" instead of "1090", and "10.10.1" becomes
+ "101001" instead of "101000".
+ * Zero padding is now ignored. Thus "10.09" correctly becomes "1090"
+ instead of "100900", and "10.00010" becomes "101000" instead of being
+ treated as invalid.
+ * Deployment targets that are missing minor and tiny numbers are no
+ longer considered invalid. Thus "10" is treated as "10.0.0", which
+ becomes "1000" without causing an error.
+
+ With this change, trunk matches the behavior of Apple LLVM Compiler
+ 6.1.0 on 8,451 of 8,464 generated test inputs. (The discrepancies are
+ due to a bug in Clang.) I don't notice any testsuite regressions on
+ OS X 10.10 Yosemite x86-64.
+
+ 2015-05-15 Lawrence Velázquez <vq@larryv.me>
+
+         PR target/63810
+         * gcc/config/darwin-c.c (version_components): New global enum.
+         (parse_version, version_as_legacy_macro)
+         (version_as_modern_macro, macosx_version_as_macro): New functions.
+         (version_as_macro): Remove.
+         (darwin_cpp_builtins): Use new function.
+         * gcc/testsuite/gcc.dg/darwin-minversion-3.c: Update testcase.
+         * gcc/testsuite/gcc.dg/darwin-minversion-4.c: Ditto.
+         * gcc/testsuite/gcc.dg/darwin-minversion-5.c: New testcase.
+         * gcc/testsuite/gcc.dg/darwin-minversion-6.c: Ditto.
+         * gcc/testsuite/gcc.dg/darwin-minversion-7.c: Ditto.
+         * gcc/testsuite/gcc.dg/darwin-minversion-8.c: Ditto.
+         * gcc/testsuite/gcc.dg/darwin-minversion-9.c: Ditto.
+         * gcc/testsuite/gcc.dg/darwin-minversion-10.c: Ditto.
+         * gcc/testsuite/gcc.dg/darwin-minversion-11.c: Ditto.
+         * gcc/testsuite/gcc.dg/darwin-minversion-12.c: Ditto.
+---
+Adapted for GCC 4.7.4 from the upstream trunk fix. The text above is
+from my email to the gcc-patches mailing list; some minor details may
+not apply to the patch below.
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810
+https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01888.html
+https://gcc.gnu.org/viewcvs/gcc?limit_changes=0&view=rev&rev=223808
+
+ gcc/config/darwin-c.c | 155 +++++++++++++++++++++++---
+ gcc/testsuite/gcc.dg/darwin-minversion-10.c | 16 +++
+ gcc/testsuite/gcc.dg/darwin-minversion-11.c | 16 +++
+ gcc/testsuite/gcc.dg/darwin-minversion-12.c | 16 +++
+ gcc/testsuite/gcc.dg/darwin-minversion-3.c | 6 +-
+ gcc/testsuite/gcc.dg/darwin-minversion-4.c | 12 ++
+ gcc/testsuite/gcc.dg/darwin-minversion-5.c | 16 +++
+ gcc/testsuite/gcc.dg/darwin-minversion-6.c | 15 +++
+ gcc/testsuite/gcc.dg/darwin-minversion-7.c | 15 +++
+ gcc/testsuite/gcc.dg/darwin-minversion-8.c | 16 +++
+ gcc/testsuite/gcc.dg/darwin-minversion-9.c | 15 +++
+ 11 files changed, 282 insertions(+), 16 deletions(-)
+
+diff --git gcc/config/darwin-c.c gcc/config/darwin-c.c
+index 211d141..3a7e3ee 100644
+--- gcc/config/darwin-c.c
</ins><span class="cx"> +++ gcc/config/darwin-c.c
</span><del>-@@ -570,29 +570,180 @@ find_subframework_header (cpp_reader *pf
</del><ins>+@@ -570,25 +570,154 @@ find_subframework_header (cpp_reader *pfile, const char *header, cpp_dir **dirp)
</ins><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -10,21 +78,23 @@
</span><span class="cx"> - __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro,
</span><span class="cx"> - so '10.4.2' becomes 1040. The lowest digit is always zero.
</span><span class="cx"> - Print a warning if the version number can't be understood. */
</span><del>-+/* Given a version string, return the version as a statically-allocated
-+ array of three non-negative integers. If the version string is
-+ invalid, return null.
</del><ins>++/* Given an OS X version VERSION_STR, return it as a statically-allocated array
++ of three integers. If VERSION_STR is invalid, return NULL.
</ins><span class="cx"> +
</span><del>-+ Version strings must consist of one, two, or three tokens, each
-+ separated by a single period. Each token must contain only the
-+ characters '0' through '9' and is converted to an equivalent
-+ integer. Omitted tokens are treated as zeros. For example:
</del><ins>++ VERSION_STR must consist of one, two, or three tokens, each separated by
++ a single period. Each token must contain only the characters '0' through
++ '9' and is converted to an equivalent non-negative decimal integer. Omitted
++ tokens become zeros. For example:
</ins><span class="cx"> +
</span><del>-+ "10" becomes {10,0,0}
-+ "10.10" becomes {10,10,0}
-+ "10.10.1" becomes {10,10,1}
-+ "10.000010.1" becomes {10,10,1}
-+ "10.010.001" becomes {10,10,1}
-+ "000010.10.00001" becomes {10,10,1} */
</del><ins>++ "10" becomes {10,0,0}
++ "10.10" becomes {10,10,0}
++ "10.10.1" becomes {10,10,1}
++ "10.000010.1" becomes {10,10,1}
++ "10.010.001" becomes {10,10,1}
++ "000010.10.00001" becomes {10,10,1}
++ ".9.1" is invalid
++ "10..9" is invalid
++ "10.10." is invalid */
</ins><span class="cx"> +
</span><span class="cx"> +enum version_components { MAJOR, MINOR, TINY };
</span><span class="cx"> +
</span><span class="lines">@@ -35,9 +105,6 @@
</span><span class="cx"> + char *end;
</span><span class="cx"> + static unsigned long version_array[3];
</span><span class="cx"> +
</span><del>-+ if (! version_str)
-+ return NULL;
-+
</del><span class="cx"> + version_len = strlen (version_str);
</span><span class="cx"> + if (version_len < 1)
</span><span class="cx"> + return NULL;
</span><span class="lines">@@ -46,7 +113,7 @@
</span><span class="cx"> + if (strspn (version_str, "0123456789.") != version_len)
</span><span class="cx"> + return NULL;
</span><span class="cx"> +
</span><del>-+ if (! ISDIGIT (version_str[0]) || ! ISDIGIT (version_str[version_len - 1]))
</del><ins>++ if (!ISDIGIT (version_str[0]) || !ISDIGIT (version_str[version_len - 1]))
</ins><span class="cx"> + return NULL;
</span><span class="cx"> +
</span><span class="cx"> + version_array[MAJOR] = strtoul (version_str, &end, 10);
</span><span class="lines">@@ -68,18 +135,16 @@
</span><span class="cx"> + return version_array;
</span><span class="cx"> +}
</span><span class="cx"> +
</span><del>-+/* Given a three-component version represented as an array of
-+ non-negative integers, return a statically-allocated string suitable
-+ for the legacy __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro.
-+ If the version is invalid and cannot be coerced into a valid form,
-+ return null.
</del><ins>++/* Given VERSION -- a three-component OS X version represented as an array of
++ non-negative integers -- return a statically-allocated string suitable for
++ the legacy __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro. If VERSION
++ is invalid and cannot be coerced into a valid form, return NULL.
</ins><span class="cx"> +
</span><del>-+ The legacy format is a four-character string -- two chars for the
-+ major number and one each for the minor and tiny numbers. Major
-+ numbers are zero-padded if necessary. Minor and tiny numbers from
-+ 10 through 99 are permitted but are clamped to 9 (for example,
-+ {10,9,10} produces "1099"). Versions containing numbers greater
-+ than 99 are rejected. */
</del><ins>++ The legacy format is a four-character string -- two chars for the major
++ number and one each for the minor and tiny numbers. Minor and tiny numbers
++ from 10 through 99 are permitted but are clamped to 9 (for example, {10,9,10}
++ produces "1099"). If VERSION contains numbers greater than 99, it is
++ rejected. */
</ins><span class="cx"> +
</span><span class="cx"> static const char *
</span><span class="cx"> -version_as_macro (void)
</span><span class="lines">@@ -87,11 +152,8 @@
</span><span class="cx"> {
</span><span class="cx"> - static char result[] = "1000";
</span><span class="cx"> + unsigned long major, minor, tiny;
</span><del>-+ static char result[sizeof "9999"];
</del><ins>++ static char result[5];
</ins><span class="cx"> +
</span><del>-+ if (! version)
-+ return NULL;
-+
</del><span class="cx"> + major = version[MAJOR];
</span><span class="cx"> + minor = version[MINOR];
</span><span class="cx"> + tiny = version[TINY];
</span><span class="lines">@@ -102,37 +164,28 @@
</span><span class="cx"> + minor = ((minor > 9) ? 9 : minor);
</span><span class="cx"> + tiny = ((tiny > 9) ? 9 : tiny);
</span><span class="cx"> +
</span><del>-+ /* NOTE: Cast result of sizeof so that result of sprintf is not
-+ converted to an unsigned type. */
-+ if (sprintf (result, "%02lu%lu%lu", major, minor, tiny)
-+ != (int) sizeof "9999" - 1)
</del><ins>++ if (sprintf (result, "%lu%lu%lu", major, minor, tiny) != 4)
</ins><span class="cx"> + return NULL;
</span><del>-
-- if (strncmp (darwin_macosx_version_min, "10.", 3) != 0)
</del><ins>++
</ins><span class="cx"> + return result;
</span><span class="cx"> +}
</span><ins>+
+- if (strncmp (darwin_macosx_version_min, "10.", 3) != 0)
++/* Given VERSION -- a three-component OS X version represented as an array of
++ non-negative integers -- return a statically-allocated string suitable for
++ the modern __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro. If VERSION
++ is invalid, return NULL.
</ins><span class="cx"> +
</span><del>-+/* Given a three-component version represented as an array of
-+ non-negative integers, return a statically-allocated string suitable
-+ for the modern __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro
-+ or the __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ macro. If the
-+ version is invalid, return null.
</del><ins>++ The modern format is a six-character string -- two chars for each component,
++ with zero-padding if necessary (for example, {10,10,1} produces "101001"). If
++ VERSION contains numbers greater than 99, it is rejected. */
</ins><span class="cx"> +
</span><del>-+ The modern format is a five- or six-character string -- one or two
-+ chars for the major number and two each for the minor and tiny
-+ numbers, which are zero-padded if necessary (for example, {8,1,0}
-+ produces "80100", and {10,10,1} produces "101001"). Versions
-+ containing numbers greater than 99 are rejected. */
-+
</del><span class="cx"> +static const char *
</span><span class="cx"> +version_as_modern_macro (const unsigned long *version)
</span><span class="cx"> +{
</span><span class="cx"> + unsigned long major, minor, tiny;
</span><del>-+ static char result[sizeof "999999"];
</del><ins>++ static char result[7];
</ins><span class="cx"> +
</span><del>-+ if (! version)
-+ return NULL;
-+
</del><span class="cx"> + major = version[MAJOR];
</span><span class="cx"> + minor = version[MINOR];
</span><span class="cx"> + tiny = version[TINY];
</span><span class="lines">@@ -140,25 +193,19 @@
</span><span class="cx"> + if (major > 99 || minor > 99 || tiny > 99)
</span><span class="cx"> + return NULL;
</span><span class="cx"> +
</span><del>-+ /* NOTE: 'sizeof ((x > y) ? "foo" : "bar")' returns size of char
-+ pointer instead of char array, so use
-+ '(x > y) ? sizeof "foo" : sizeof "bar"' instead. */
-+ /* NOTE: Cast result of sizeof so that result of sprintf is not
-+ converted to an unsigned type. */
-+ if (sprintf (result, "%lu%02lu%02lu", major, minor, tiny)
-+ != (int) ((major > 9) ? sizeof "999999" : sizeof "99999") - 1)
</del><ins>++ if (sprintf (result, "%02lu%02lu%02lu", major, minor, tiny) != 6)
</ins><span class="cx"> + return NULL;
</span><span class="cx"> +
</span><span class="cx"> + return result;
</span><span class="cx"> +}
</span><span class="cx"> +
</span><del>-+/* Return the value of darwin_macosx_version_min, suitably formatted
-+ for the __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro. Values
-+ representing OS X 10.9 and earlier are encoded using the legacy
-+ four-character format, while 10.10 and later use a modern
-+ six-character format. (For example, "10.9" produces "1090", and
-+ "10.10.1" produces "101001".) If the value is invalid and cannot be
-+ coerced into a valid form, print a warning and return "1000". */
</del><ins>++/* Return the value of darwin_macosx_version_min, suitably formatted for the
++ __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro. Values representing
++ OS X 10.9 and earlier are encoded using the legacy four-character format,
++ while 10.10 and later use a modern six-character format. (For example,
++ "10.9" produces "1090", and "10.10.1" produces "101001".) If
++ darwin_macosx_version_min is invalid and cannot be coerced into a valid
++ form, print a warning and return "1000". */
</ins><span class="cx"> +
</span><span class="cx"> +static const char *
</span><span class="cx"> +macosx_version_as_macro (void)
</span><span class="lines">@@ -167,23 +214,22 @@
</span><span class="cx"> + const char *version_macro;
</span><span class="cx"> +
</span><span class="cx"> + version_array = parse_version (darwin_macosx_version_min);
</span><del>-+ if (! version_array)
</del><ins>++ if (!version_array)
</ins><span class="cx"> goto fail;
</span><span class="cx"> - if (! ISDIGIT (darwin_macosx_version_min[3]))
</span><span class="cx"> +
</span><del>-+ /* Do not assume that the major number will always be exactly 10. */
-+ if (version_array[MAJOR] < 10 || version_array[MAJOR] > 10)
</del><ins>++ if (version_array[MAJOR] != 10)
</ins><span class="cx"> goto fail;
</span><span class="cx"> - result[2] = darwin_macosx_version_min[3];
</span><span class="cx"> - if (darwin_macosx_version_min[4] != '\0'
</span><span class="cx"> - && darwin_macosx_version_min[4] != '.')
</span><span class="cx"> +
</span><del>-+ if (version_array[MAJOR] == 10 && version_array[MINOR] < 10)
</del><ins>++ if (version_array[MINOR] < 10)
</ins><span class="cx"> + version_macro = version_as_legacy_macro (version_array);
</span><span class="cx"> + else
</span><span class="cx"> + version_macro = version_as_modern_macro (version_array);
</span><span class="cx"> +
</span><del>-+ if (! version_macro)
</del><ins>++ if (!version_macro)
</ins><span class="cx"> goto fail;
</span><span class="cx">
</span><span class="cx"> - return result;
</span><span class="lines">@@ -191,12 +237,7 @@
</span><span class="cx">
</span><span class="cx"> fail:
</span><span class="cx"> error ("unknown value %qs of -mmacosx-version-min",
</span><del>--         darwin_macosx_version_min);
-+ darwin_macosx_version_min);
- return "1000";
- }
-
-@@ -614,7 +765,7 @@ darwin_cpp_builtins (cpp_reader *pfile)
</del><ins>+@@ -614,7 +743,7 @@ darwin_cpp_builtins (cpp_reader *pfile)
</ins><span class="cx"> builtin_define ("__CONSTANT_CFSTRINGS__");
</span><span class="cx">
</span><span class="cx"> builtin_define_with_value ("__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__",
</span><span class="lines">@@ -205,133 +246,16 @@
</span><span class="cx">
</span><span class="cx"> /* Since we do not (at 4.6) support ObjC gc for the NeXT runtime, the
</span><span class="cx"> following will cause a syntax error if one tries to compile gc attributed
</span><del>-Index: gcc/config/darwin-driver.c
-===================================================================
---- gcc/config/darwin-driver.c.orig
-+++ gcc/config/darwin-driver.c
-@@ -29,8 +29,8 @@ along with GCC; see the file COPYING3.
- #include <sys/sysctl.h>
- #include "xregex.h"
-
--static bool
--darwin_find_version_from_kernel (char *new_flag)
-+static char *
-+darwin_find_version_from_kernel (void)
- {
- char osversion[32];
- size_t osversion_len = sizeof (osversion) - 1;
-@@ -39,6 +39,7 @@ darwin_find_version_from_kernel (char *n
- char minor_vers[6];
- char * version_p;
- char * version_pend;
-+ char * new_flag;
-
- /* Determine the version of the running OS. If we can't, warn user,
- and do nothing. */
-@@ -46,7 +47,7 @@ darwin_find_version_from_kernel (char *n
-          &osversion_len, NULL, 0) == -1)
- {
- warning (0, "sysctl for kern.osversion failed: %m");
-- return false;
-+ return NULL;
- }
-
- /* Try to parse the first two parts of the OS version number. Warn
-@@ -57,8 +58,6 @@ darwin_find_version_from_kernel (char *n
- version_p = osversion + 1;
- if (ISDIGIT (*version_p))
- major_vers = major_vers * 10 + (*version_p++ - '0');
-- if (major_vers > 4 + 9)
-- goto parse_failed;
- if (*version_p++ != '.')
- goto parse_failed;
- version_pend = strchr(version_p, '.');
-@@ -74,17 +73,16 @@ darwin_find_version_from_kernel (char *n
- if (major_vers - 4 <= 4)
- /* On 10.4 and earlier, the old linker is used which does not
- support three-component system versions. */
-- sprintf (new_flag, "10.%d", major_vers - 4);
-+ asprintf (&new_flag, "10.%d", major_vers - 4);
- else
-- sprintf (new_flag, "10.%d.%s", major_vers - 4,
--         minor_vers);
-+ asprintf (&new_flag, "10.%d.%s", major_vers - 4, minor_vers);
-
-- return true;
-+ return new_flag;
-
- parse_failed:
- warning (0, "couldn%'t understand kern.osversion %q.*s",
-          (int) osversion_len, osversion);
-- return false;
-+ return NULL;
- }
-
- #endif
-@@ -105,7 +103,7 @@ darwin_default_min_version (unsigned int
- const unsigned int argc = *decoded_options_count;
- struct cl_decoded_option *const argv = *decoded_options;
- unsigned int i;
-- static char new_flag[sizeof ("10.0.0") + 6];
-+ const char *new_flag;
-
- /* If the command-line is empty, just return. */
- if (argc <= 1)
-@@ -142,16 +140,16 @@ darwin_default_min_version (unsigned int
-
- #ifndef CROSS_DIRECTORY_STRUCTURE
-
-- /* Try to find the version from the kernel, if we fail - we print a message
-- and give up. */
-- if (!darwin_find_version_from_kernel (new_flag))
-- return;
-+ /* Try to find the version from the kernel, if we fail - we print a message
-+ and give up. */
-+ new_flag = darwin_find_version_from_kernel ();
-+ if (!new_flag)
-+ return;
-
- #else
-
-- /* For cross-compilers, default to the target OS version. */
--
-- strncpy (new_flag, DEF_MIN_OSX_VERSION, sizeof (new_flag));
-+ /* For cross-compilers, default to the target OS version. */
-+ new_flag = DEF_MIN_OSX_VERSION;
-
- #endif /* CROSS_DIRECTORY_STRUCTURE */
-
-@@ -165,7 +163,6 @@ darwin_default_min_version (unsigned int
- memcpy (*decoded_options + 2, argv + 1,
-          (argc - 1) * sizeof (struct cl_decoded_option));
- return;
--
- }
-
- /* Translate -filelist and -framework options in *DECODED_OPTIONS
-Index: gcc/testsuite/gcc.dg/darwin-minversion-1.c
-===================================================================
---- gcc/testsuite/gcc.dg/darwin-minversion-1.c.orig
-+++ gcc/testsuite/gcc.dg/darwin-minversion-1.c
-@@ -2,7 +2,8 @@
- /* { dg-options "-mmacosx-version-min=10.1" } */
- /* { dg-do run { target *-*-darwin* } } */
-
--int main(void)
-+int
-+main ()
- {
- #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1010
- fail me;
-Index: gcc/testsuite/gcc.dg/darwin-minversion-10.c
-===================================================================
</del><ins>+diff --git gcc/testsuite/gcc.dg/darwin-minversion-10.c gcc/testsuite/gcc.dg/darwin-minversion-10.c
+new file mode 100644
+index 0000000..bf95d46
</ins><span class="cx"> --- /dev/null
</span><span class="cx"> +++ gcc/testsuite/gcc.dg/darwin-minversion-10.c
</span><span class="cx"> @@ -0,0 +1,16 @@
</span><del>-+/* PR target/63810: Test that a version with a zero-padded minor
-+ number < 10 and a zero-padded tiny number < 10 produces the correct
</del><ins>++/* PR target/63810: Test that an OS X minimum version with zero-padded
++ minor and tiny numbers less than 10 produces the correct
</ins><span class="cx"> + four-character macro. */
</span><del>-+/* Added by Lawrence Velázquez <larryv@macports.org>. */
</del><ins>++/* Added by Lawrence Velázquez <vq@larryv.me>. */
</ins><span class="cx"> +
</span><span class="cx"> +/* { dg-options "-mmacosx-version-min=10.07.02" } */
</span><span class="cx"> +/* { dg-do compile { target *-*-darwin* } } */
</span><span class="lines">@@ -344,14 +268,16 @@
</span><span class="cx"> +#endif
</span><span class="cx"> + return 0;
</span><span class="cx"> +}
</span><del>-Index: gcc/testsuite/gcc.dg/darwin-minversion-11.c
-===================================================================
</del><ins>+diff --git gcc/testsuite/gcc.dg/darwin-minversion-11.c gcc/testsuite/gcc.dg/darwin-minversion-11.c
+new file mode 100644
+index 0000000..a03e707
</ins><span class="cx"> --- /dev/null
</span><span class="cx"> +++ gcc/testsuite/gcc.dg/darwin-minversion-11.c
</span><del>-@@ -0,0 +1,15 @@
-+/* PR target/63810: Test that a version with outrageous zero-padding and
-+ a minor number > 9 still produces a six-character macro. */
-+/* Added by Lawrence Velázquez <larryv@macports.org>. */
</del><ins>+@@ -0,0 +1,16 @@
++/* PR target/63810: Test that an OS X minimum version with outrageous
++ zero-padding and a minor number greater than 9 still produces
++ a six-character macro. */
++/* Added by Lawrence Velázquez <vq@larryv.me>. */
</ins><span class="cx"> +
</span><span class="cx"> +/* { dg-options "-mmacosx-version-min=00010.010.0000098" } */
</span><span class="cx"> +/* { dg-do compile { target *-*-darwin* } } */
</span><span class="lines">@@ -364,14 +290,16 @@
</span><span class="cx"> +#endif
</span><span class="cx"> + return 0;
</span><span class="cx"> +}
</span><del>-Index: gcc/testsuite/gcc.dg/darwin-minversion-12.c
-===================================================================
</del><ins>+diff --git gcc/testsuite/gcc.dg/darwin-minversion-12.c gcc/testsuite/gcc.dg/darwin-minversion-12.c
+new file mode 100644
+index 0000000..4c2ce38
</ins><span class="cx"> --- /dev/null
</span><span class="cx"> +++ gcc/testsuite/gcc.dg/darwin-minversion-12.c
</span><del>-@@ -0,0 +1,15 @@
-+/* PR target/63810: Test that a version with outrageous zero-padding and
-+ a minor number < 10 still produces a four-character macro. */
-+/* Added by Lawrence Velázquez <larryv@macports.org>. */
</del><ins>+@@ -0,0 +1,16 @@
++/* PR target/63810: Test that an OS X minimum version with outrageous
++ zero-padding and a minor number less than 10 still produces
++ a four-character macro. */
++/* Added by Lawrence Velázquez <vq@larryv.me>. */
</ins><span class="cx"> +
</span><span class="cx"> +/* { dg-options "-mmacosx-version-min=010.008.000031" } */
</span><span class="cx"> +/* { dg-do compile { target *-*-darwin* } } */
</span><span class="lines">@@ -384,46 +312,31 @@
</span><span class="cx"> +#endif
</span><span class="cx"> + return 0;
</span><span class="cx"> +}
</span><del>-Index: gcc/testsuite/gcc.dg/darwin-minversion-2.c
-===================================================================
---- gcc/testsuite/gcc.dg/darwin-minversion-2.c.orig
-+++ gcc/testsuite/gcc.dg/darwin-minversion-2.c
-@@ -2,7 +2,8 @@
- /* { dg-options "-mmacosx-version-min=10.1 -mmacosx-version-min=10.3" } */
- /* { dg-do run { target *-*-darwin* } } */
-
--int main(void)
-+int
-+main ()
- {
- #if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1030
- fail me;
-Index: gcc/testsuite/gcc.dg/darwin-minversion-3.c
-===================================================================
---- gcc/testsuite/gcc.dg/darwin-minversion-3.c.orig
</del><ins>+diff --git gcc/testsuite/gcc.dg/darwin-minversion-3.c gcc/testsuite/gcc.dg/darwin-minversion-3.c
+index d0c5934..76886dd 100644
+--- gcc/testsuite/gcc.dg/darwin-minversion-3.c
</ins><span class="cx"> +++ gcc/testsuite/gcc.dg/darwin-minversion-3.c
</span><del>-@@ -1,10 +1,11 @@
</del><ins>+@@ -1,10 +1,10 @@
</ins><span class="cx"> -/* Test that most-minor versions greater than 9 work. */
</span><span class="cx"> -/* { dg-options "-mmacosx-version-min=10.4.10" } */
</span><del>-+/* Test that most minor versions < 10 work. */
</del><ins>++/* Test that most minor versions less than 10 work. */
</ins><span class="cx"> +/* { dg-options "-mmacosx-version-min=10.4.1" } */
</span><span class="cx"> /* { dg-do compile { target *-*-darwin* } } */
</span><span class="cx">
</span><del>--int main(void)
-+int
-+main ()
</del><ins>+ int main(void)
</ins><span class="cx"> {
</span><span class="cx"> -#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1040
</span><span class="cx"> +#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1041
</span><span class="cx"> fail me;
</span><span class="cx"> #endif
</span><span class="cx"> return 0;
</span><del>-Index: gcc/testsuite/gcc.dg/darwin-minversion-4.c
-===================================================================
</del><ins>+diff --git gcc/testsuite/gcc.dg/darwin-minversion-4.c gcc/testsuite/gcc.dg/darwin-minversion-4.c
+new file mode 100644
+index 0000000..1481aa5
</ins><span class="cx"> --- /dev/null
</span><span class="cx"> +++ gcc/testsuite/gcc.dg/darwin-minversion-4.c
</span><span class="cx"> @@ -0,0 +1,12 @@
</span><del>-+/* Test that minor versions > 9 produce a six-character macro. */
</del><ins>++/* Test that minor versions greater than 9 produce a six-character macro. */
</ins><span class="cx"> +/* { dg-options "-mmacosx-version-min=10.10.1" } */
</span><span class="cx"> +/* { dg-do compile { target *-*-darwin* } } */
</span><span class="cx"> +
</span><span class="lines">@@ -435,15 +348,16 @@
</span><span class="cx"> +#endif
</span><span class="cx"> + return 0;
</span><span class="cx"> +}
</span><del>-Index: gcc/testsuite/gcc.dg/darwin-minversion-5.c
-===================================================================
</del><ins>+diff --git gcc/testsuite/gcc.dg/darwin-minversion-5.c gcc/testsuite/gcc.dg/darwin-minversion-5.c
+new file mode 100644
+index 0000000..09a9d72
</ins><span class="cx"> --- /dev/null
</span><span class="cx"> +++ gcc/testsuite/gcc.dg/darwin-minversion-5.c
</span><span class="cx"> @@ -0,0 +1,16 @@
</span><del>-+/* PR target/63810: Test that a version with minor number < 10 and tiny
-+ number > 9 produces a four-character macro with the tiny number
-+ clamped to 9. */
-+/* Added by Lawrence Velázquez <larryv@macports.org>. */
</del><ins>++/* PR target/63810: Test that an OS X minimum version with minor number
++ less than 10 and tiny number greater than 9 produces a four-character
++ macro with the tiny number clamped to 9. */
++/* Added by Lawrence Velázquez <vq@larryv.me>. */
</ins><span class="cx"> +
</span><span class="cx"> +/* { dg-options "-mmacosx-version-min=10.9.10" } */
</span><span class="cx"> +/* { dg-do compile { target *-*-darwin* } } */
</span><span class="lines">@@ -456,14 +370,15 @@
</span><span class="cx"> +#endif
</span><span class="cx"> + return 0;
</span><span class="cx"> +}
</span><del>-Index: gcc/testsuite/gcc.dg/darwin-minversion-6.c
-===================================================================
</del><ins>+diff --git gcc/testsuite/gcc.dg/darwin-minversion-6.c gcc/testsuite/gcc.dg/darwin-minversion-6.c
+new file mode 100644
+index 0000000..e01fa72
</ins><span class="cx"> --- /dev/null
</span><span class="cx"> +++ gcc/testsuite/gcc.dg/darwin-minversion-6.c
</span><span class="cx"> @@ -0,0 +1,15 @@
</span><span class="cx"> +/* PR target/63810: Test that tiny numbers are preserved in
</span><span class="cx"> + six-character macros. */
</span><del>-+/* Added by Lawrence Velázquez <larryv@macports.org>. */
</del><ins>++/* Added by Lawrence Velázquez <vq@larryv.me>. */
</ins><span class="cx"> +
</span><span class="cx"> +/* { dg-options "-mmacosx-version-min=10.10.11" } */
</span><span class="cx"> +/* { dg-do compile { target *-*-darwin* } } */
</span><span class="lines">@@ -476,14 +391,15 @@
</span><span class="cx"> +#endif
</span><span class="cx"> + return 0;
</span><span class="cx"> +}
</span><del>-Index: gcc/testsuite/gcc.dg/darwin-minversion-7.c
-===================================================================
</del><ins>+diff --git gcc/testsuite/gcc.dg/darwin-minversion-7.c gcc/testsuite/gcc.dg/darwin-minversion-7.c
+new file mode 100644
+index 0000000..72f495b
</ins><span class="cx"> --- /dev/null
</span><span class="cx"> +++ gcc/testsuite/gcc.dg/darwin-minversion-7.c
</span><span class="cx"> @@ -0,0 +1,15 @@
</span><del>-+/* PR target/63810: Test that tiny numbers < 10 are preserved in
</del><ins>++/* PR target/63810: Test that tiny numbers less than 10 are preserved in
</ins><span class="cx"> + four-character macros. */
</span><del>-+/* Added by Lawrence Velázquez <larryv@macports.org>. */
</del><ins>++/* Added by Lawrence Velázquez <vq@larryv.me>. */
</ins><span class="cx"> +
</span><span class="cx"> +/* { dg-options "-mmacosx-version-min=10.9.1" } */
</span><span class="cx"> +/* { dg-do compile { target *-*-darwin* } } */
</span><span class="lines">@@ -496,14 +412,16 @@
</span><span class="cx"> +#endif
</span><span class="cx"> + return 0;
</span><span class="cx"> +}
</span><del>-Index: gcc/testsuite/gcc.dg/darwin-minversion-8.c
-===================================================================
</del><ins>+diff --git gcc/testsuite/gcc.dg/darwin-minversion-8.c gcc/testsuite/gcc.dg/darwin-minversion-8.c
+new file mode 100644
+index 0000000..5982df5
</ins><span class="cx"> --- /dev/null
</span><span class="cx"> +++ gcc/testsuite/gcc.dg/darwin-minversion-8.c
</span><del>-@@ -0,0 +1,15 @@
-+/* PR target/63810: Test that a version with minor number > 9 and no
-+ tiny number produces a six-character macro ending in "00". */
-+/* Added by Lawrence Velázquez <larryv@macports.org>. */
</del><ins>+@@ -0,0 +1,16 @@
++/* PR target/63810: Test that an OS X minimum version with minor number
++ greater than 9 and no tiny number produces a six-character macro
++ ending in "00". */
++/* Added by Lawrence Velázquez <vq@larryv.me>. */
</ins><span class="cx"> +
</span><span class="cx"> +/* { dg-options "-mmacosx-version-min=10.11" } */
</span><span class="cx"> +/* { dg-do compile { target *-*-darwin* } } */
</span><span class="lines">@@ -516,14 +434,15 @@
</span><span class="cx"> +#endif
</span><span class="cx"> + return 0;
</span><span class="cx"> +}
</span><del>-Index: gcc/testsuite/gcc.dg/darwin-minversion-9.c
-===================================================================
</del><ins>+diff --git gcc/testsuite/gcc.dg/darwin-minversion-9.c gcc/testsuite/gcc.dg/darwin-minversion-9.c
+new file mode 100644
+index 0000000..d781783
</ins><span class="cx"> --- /dev/null
</span><span class="cx"> +++ gcc/testsuite/gcc.dg/darwin-minversion-9.c
</span><span class="cx"> @@ -0,0 +1,15 @@
</span><del>-+/* PR target/63810: Test that a version with a zero-padded minor
-+ number < 10 produces a four-character macro. */
-+/* Added by Lawrence Velázquez <larryv@macports.org>. */
</del><ins>++/* PR target/63810: Test that an OS X minimum version with a zero-padded
++ minor number less than 10 produces a four-character macro. */
++/* Added by Lawrence Velázquez <vq@larryv.me>. */
</ins><span class="cx"> +
</span><span class="cx"> +/* { dg-options "-mmacosx-version-min=10.08.4" } */
</span><span class="cx"> +/* { dg-do compile { target *-*-darwin* } } */
</span></span></pre></div>
<a id="trunkdportslanggcc47filesremovekernelversioncheckpatchfromrev127365trunkdportslanggcc47filesyosemiteversioncheckpatch"></a>
<div class="copfile"><h4>Copied: trunk/dports/lang/gcc47/files/remove-kernel-version-check.patch (from rev 127365, trunk/dports/lang/gcc47/files/yosemite-version-check.patch) (0 => 136924)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/lang/gcc47/files/remove-kernel-version-check.patch         (rev 0)
+++ trunk/dports/lang/gcc47/files/remove-kernel-version-check.patch        2015-05-30 05:05:09 UTC (rev 136924)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+commit 9be4ec7ebf2d759114a98b0f532171f0e9e5768d
+Author: fxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date: Sun Sep 14 08:05:43 2014 +0000
+
+         PR target/61407
+
+         * config/darwin-driver.c (darwin_find_version_from_kernel): Removed
+         kernel version check to avoid incrementing it after every major OS X
+         release.
+---
+Extracted from upstream r215251.
+
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407
+https://gcc.gnu.org/viewcvs/gcc?view=rev&rev=215251
+
+ gcc/config/darwin-driver.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git gcc/config/darwin-driver.c gcc/config/darwin-driver.c
+index 48eaf19..5b3991c 100644
+--- gcc/config/darwin-driver.c
++++ gcc/config/darwin-driver.c
+@@ -57,8 +57,6 @@ darwin_find_version_from_kernel (char *new_flag)
+ version_p = osversion + 1;
+ if (ISDIGIT (*version_p))
+ major_vers = major_vers * 10 + (*version_p++ - '0');
+- if (major_vers > 4 + 9)
+- goto parse_failed;
+ if (*version_p++ != '.')
+ goto parse_failed;
+ version_pend = strchr(version_p, '.');
</ins></span></pre></div>
<a id="trunkdportslanggcc47filesremovekernelversioncheckpatch"></a>
<div class="propset"><h4>Property changes: trunk/dports/lang/gcc47/files/remove-kernel-version-check.patch</h4>
<pre class="diff"><span>
</span></pre></div>
<a id="svnmergeinfo"></a>
<div class="addfile"><h4>Added: svn:mergeinfo</h4></div>
</div>
</body>
</html>