<!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>[128360] trunk/dports/lang/gcc48</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/128360">128360</a></dd>
<dt>Author</dt> <dd>larryv@macports.org</dd>
<dt>Date</dt> <dd>2014-11-19 11:17:25 -0800 (Wed, 19 Nov 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>gcc48: Fix handling of OS X deployment targets

See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810, and also
comment:9:ticket:45449, comment:61:ticket:43978, and
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407#c49.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkdportslanggcc48Portfile">trunk/dports/lang/gcc48/Portfile</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkdportslanggcc48filesmacosxversionminpatch">trunk/dports/lang/gcc48/files/macosx-version-min.patch</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkdportslanggcc48filespatch1010diff">trunk/dports/lang/gcc48/files/patch-10.10.diff</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkdportslanggcc48Portfile"></a>
<div class="modfile"><h4>Modified: trunk/dports/lang/gcc48/Portfile (128359 => 128360)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/lang/gcc48/Portfile        2014-11-19 17:56:31 UTC (rev 128359)
+++ trunk/dports/lang/gcc48/Portfile        2014-11-19 19:17:25 UTC (rev 128360)
</span><span class="lines">@@ -10,7 +10,7 @@
</span><span class="cx"> # Whenever this port is bumped for version/revision, please revbump dragonegg-*-gcc-4.8
</span><span class="cx"> epoch               2
</span><span class="cx"> version             4.8.3
</span><del>-revision            1
</del><ins>+revision            2
</ins><span class="cx"> platforms           darwin
</span><span class="cx"> categories          lang
</span><span class="cx"> maintainers         mww openmaintainer
</span><span class="lines">@@ -39,7 +39,9 @@
</span><span class="cx"> depends_skip_archcheck-append gcc_select ld64 cctools
</span><span class="cx"> license_noconflict  gmp mpfr ppl libmpc
</span><span class="cx"> 
</span><del>-patchfiles          patch-10.10.diff
</del><ins>+# Handle OS X deployment targets correctly (GCC PR target/63810
+# &lt;https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63810&gt;).
+patchfiles          macosx-version-min.patch
</ins><span class="cx"> 
</span><span class="cx"> # Don't link with &quot;-flat_namespace -undefined suppress&quot; on Yosemite and
</span><span class="cx"> # later (#45483).
</span></span></pre></div>
<a id="trunkdportslanggcc48filesmacosxversionminpatchfromrev128359trunkdportslanggcc49filesmacosxversionminpatch"></a>
<div class="copfile"><h4>Copied: trunk/dports/lang/gcc48/files/macosx-version-min.patch (from rev 128359, trunk/dports/lang/gcc49/files/macosx-version-min.patch) (0 => 128360)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/lang/gcc48/files/macosx-version-min.patch                                (rev 0)
+++ trunk/dports/lang/gcc48/files/macosx-version-min.patch        2014-11-19 19:17:25 UTC (rev 128360)
</span><span class="lines">@@ -0,0 +1,538 @@
</span><ins>+Index: gcc/config/darwin-c.c
+===================================================================
+--- gcc/config/darwin-c.c.orig
++++ gcc/config/darwin-c.c
+@@ -570,29 +570,180 @@ find_subframework_header (cpp_reader *pf
+   return 0;
+ }

+-/* Return the value of darwin_macosx_version_min suitable for the
+-   __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro,
+-   so '10.4.2' becomes 1040.  The lowest digit is always zero.
+-   Print a warning if the version number can't be understood.  */
++/*  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.
++
++    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:
++
++        &quot;10&quot;              becomes   {10,0,0}
++        &quot;10.10&quot;           becomes   {10,10,0}
++        &quot;10.10.1&quot;         becomes   {10,10,1}
++        &quot;10.000010.1&quot;     becomes   {10,10,1}
++        &quot;10.010.001&quot;      becomes   {10,10,1}
++        &quot;000010.10.00001&quot; becomes   {10,10,1}  */
++
++enum version_components { MAJOR, MINOR, TINY };
++
++static const unsigned long *
++parse_version (const char *version_str)
++{
++  size_t version_len;
++  char *end;
++  static unsigned long version_array[3];
++
++  if (! version_str)
++    return NULL;
++
++  version_len = strlen (version_str);
++  if (version_len &lt; 1)
++    return NULL;
++
++  /* Version string must consist of digits and periods only.  */
++  if (strspn (version_str, &quot;0123456789.&quot;) != version_len)
++    return NULL;
++
++  if (! ISDIGIT (version_str[0]) || ! ISDIGIT (version_str[version_len - 1]))
++    return NULL;
++
++  version_array[MAJOR] = strtoul (version_str, &amp;end, 10);
++  version_str = end + ((*end == '.') ? 1 : 0);
++
++  /* Version string must not contain adjacent periods.  */
++  if (*version_str == '.')
++    return NULL;
++
++  version_array[MINOR] = strtoul (version_str, &amp;end, 10);
++  version_str = end + ((*end == '.') ? 1 : 0);
++
++  version_array[TINY] = strtoul (version_str, &amp;end, 10);
++
++  /* Version string must contain no more than three tokens.  */
++  if (*end != '\0')
++    return NULL;
++
++  return version_array;
++}
++
++/*  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.
++
++    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 &quot;1099&quot;).  Versions containing numbers greater
++    than 99 are rejected.  */
++
+ static const char *
+-version_as_macro (void)
++version_as_legacy_macro (const unsigned long *version)
+ {
+-  static char result[] = &quot;1000&quot;;
++  unsigned long major, minor, tiny;
++  static char result[sizeof &quot;9999&quot;];
++
++  if (! version)
++    return NULL;
++
++  major = version[MAJOR];
++  minor = version[MINOR];
++  tiny = version[TINY];
++
++  if (major &gt; 99 || minor &gt; 99 || tiny &gt; 99)
++    return NULL;
++
++  minor = ((minor &gt; 9) ? 9 : minor);
++  tiny = ((tiny &gt; 9) ? 9 : tiny);
++
++  /* NOTE: Cast result of sizeof so that result of sprintf is not
++     converted to an unsigned type.  */
++  if (sprintf (result, &quot;%02lu%lu%lu&quot;, major, minor, tiny)
++      != (int) sizeof &quot;9999&quot; - 1)
++    return NULL;

+-  if (strncmp (darwin_macosx_version_min, &quot;10.&quot;, 3) != 0)
++  return result;
++}
++
++/*  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.
++
++    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 &quot;80100&quot;, and {10,10,1} produces &quot;101001&quot;).  Versions
++    containing numbers greater than 99 are rejected.  */
++
++static const char *
++version_as_modern_macro (const unsigned long *version)
++{
++  unsigned long major, minor, tiny;
++  static char result[sizeof &quot;999999&quot;];
++
++  if (! version)
++    return NULL;
++
++  major = version[MAJOR];
++  minor = version[MINOR];
++  tiny = version[TINY];
++
++  if (major &gt; 99 || minor &gt; 99 || tiny &gt; 99)
++    return NULL;
++
++  /* NOTE: 'sizeof ((x &gt; y) ? &quot;foo&quot; : &quot;bar&quot;)' returns size of char
++     pointer instead of char array, so use
++     '(x &gt; y) ? sizeof &quot;foo&quot; : sizeof &quot;bar&quot;' instead.  */
++  /* NOTE: Cast result of sizeof so that result of sprintf is not
++     converted to an unsigned type.  */
++  if (sprintf (result, &quot;%lu%02lu%02lu&quot;, major, minor, tiny)
++      != (int) ((major &gt; 9) ? sizeof &quot;999999&quot; : sizeof &quot;99999&quot;) - 1)
++    return NULL;
++
++  return result;
++}
++
++/*  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, &quot;10.9&quot; produces &quot;1090&quot;, and
++    &quot;10.10.1&quot; produces &quot;101001&quot;.)  If the value is invalid and cannot be
++    coerced into a valid form, print a warning and return &quot;1000&quot;.  */
++
++static const char *
++macosx_version_as_macro (void)
++{
++  const unsigned long *version_array;
++  const char *version_macro;
++
++  version_array = parse_version (darwin_macosx_version_min);
++  if (! version_array)
+     goto fail;
+-  if (! ISDIGIT (darwin_macosx_version_min[3]))
++
++  /* Do not assume that the major number will always be exactly 10.  */
++  if (version_array[MAJOR] &lt; 10 || version_array[MAJOR] &gt; 10)
+     goto fail;
+-  result[2] = darwin_macosx_version_min[3];
+-  if (darwin_macosx_version_min[4] != '\0'
+-      &amp;&amp; darwin_macosx_version_min[4] != '.')
++
++  if (version_array[MAJOR] == 10 &amp;&amp; version_array[MINOR] &lt; 10)
++    version_macro = version_as_legacy_macro (version_array);
++  else
++    version_macro = version_as_modern_macro (version_array);
++
++  if (! version_macro)
+     goto fail;

+-  return result;
++  return version_macro;

+  fail:
+   error (&quot;unknown value %qs of -mmacosx-version-min&quot;,
+-         darwin_macosx_version_min);
++         darwin_macosx_version_min);
+   return &quot;1000&quot;;
+ }

+@@ -614,7 +765,7 @@ darwin_cpp_builtins (cpp_reader *pfile)
+     builtin_define (&quot;__CONSTANT_CFSTRINGS__&quot;);

+   builtin_define_with_value (&quot;__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__&quot;,
+-                             version_as_macro(), false);
++                             macosx_version_as_macro(), false);

+   /* Since we do not (at 4.6) support ObjC gc for the NeXT runtime, the
+      following will cause a syntax error if one tries to compile gc attributed
+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 &lt;sys/sysctl.h&gt;
+ #include &quot;xregex.h&quot;

+-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
+               &amp;osversion_len, NULL, 0) == -1)
+     {
+       warning (0, &quot;sysctl for kern.osversion failed: %m&quot;);
+-      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 &gt; 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 &lt;= 4)
+     /* On 10.4 and earlier, the old linker is used which does not
+        support three-component system versions.  */
+-    sprintf (new_flag, &quot;10.%d&quot;, major_vers - 4);
++    asprintf (&amp;new_flag, &quot;10.%d&quot;, major_vers - 4);
+   else
+-    sprintf (new_flag, &quot;10.%d.%s&quot;, major_vers - 4,
+-             minor_vers);
++    asprintf (&amp;new_flag, &quot;10.%d.%s&quot;, major_vers - 4, minor_vers);

+-  return true;
++  return new_flag;

+  parse_failed:
+   warning (0, &quot;couldn%'t understand kern.osversion %q.*s&quot;,
+            (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 (&quot;10.0.0&quot;) + 6];
++  const char *new_flag;

+   /* If the command-line is empty, just return.  */
+   if (argc &lt;= 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 &quot;-mmacosx-version-min=10.1&quot; } */
+ /* { 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
+===================================================================
+--- /dev/null
++++ gcc/testsuite/gcc.dg/darwin-minversion-10.c
+@@ -0,0 +1,16 @@
++/* PR target/63810: Test that a version with a zero-padded minor
++   number &lt; 10 and a zero-padded tiny number &lt; 10 produces the correct
++   four-character macro.  */
++/* Added by Lawrence Velázquez &lt;larryv@macports.org&gt;.  */
++
++/* { dg-options &quot;-mmacosx-version-min=10.07.02&quot; } */
++/* { dg-do compile { target *-*-darwin* } } */
++
++int
++main ()
++{
++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1072
++  fail me;
++#endif
++  return 0;
++}
+Index: gcc/testsuite/gcc.dg/darwin-minversion-11.c
+===================================================================
+--- /dev/null
++++ gcc/testsuite/gcc.dg/darwin-minversion-11.c
+@@ -0,0 +1,15 @@
++/* PR target/63810: Test that a version with outrageous zero-padding and
++   a minor number &gt; 9 still produces a six-character macro.  */
++/* Added by Lawrence Velázquez &lt;larryv@macports.org&gt;.  */
++
++/* { dg-options &quot;-mmacosx-version-min=00010.010.0000098&quot; } */
++/* { dg-do compile { target *-*-darwin* } } */
++
++int
++main ()
++{
++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 101098
++  fail me;
++#endif
++  return 0;
++}
+Index: gcc/testsuite/gcc.dg/darwin-minversion-12.c
+===================================================================
+--- /dev/null
++++ gcc/testsuite/gcc.dg/darwin-minversion-12.c
+@@ -0,0 +1,15 @@
++/* PR target/63810: Test that a version with outrageous zero-padding and
++   a minor number &lt; 10 still produces a four-character macro.  */
++/* Added by Lawrence Velázquez &lt;larryv@macports.org&gt;.  */
++
++/* { dg-options &quot;-mmacosx-version-min=010.008.000031&quot; } */
++/* { dg-do compile { target *-*-darwin* } } */
++
++int
++main ()
++{
++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1089
++  fail me;
++#endif
++  return 0;
++}
+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 &quot;-mmacosx-version-min=10.1 -mmacosx-version-min=10.3&quot; } */
+ /* { 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
++++ gcc/testsuite/gcc.dg/darwin-minversion-3.c
+@@ -1,10 +1,11 @@
+-/* Test that most-minor versions greater than 9 work.  */
+-/* { dg-options &quot;-mmacosx-version-min=10.4.10&quot; } */
++/* Test that most minor versions &lt; 10 work.  */
++/* { dg-options &quot;-mmacosx-version-min=10.4.1&quot; } */
+ /* { dg-do compile { target *-*-darwin* } } */

+-int main(void)
++int
++main ()
+ {
+-#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1040
++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1041
+   fail me;
+ #endif
+   return 0;
+Index: gcc/testsuite/gcc.dg/darwin-minversion-4.c
+===================================================================
+--- /dev/null
++++ gcc/testsuite/gcc.dg/darwin-minversion-4.c
+@@ -0,0 +1,12 @@
++/* Test that minor versions &gt; 9 produce a six-character macro.  */
++/* { dg-options &quot;-mmacosx-version-min=10.10.1&quot; } */
++/* { dg-do compile { target *-*-darwin* } } */
++
++int
++main ()
++{
++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 101001
++  fail me;
++#endif
++  return 0;
++}
+Index: gcc/testsuite/gcc.dg/darwin-minversion-5.c
+===================================================================
+--- /dev/null
++++ gcc/testsuite/gcc.dg/darwin-minversion-5.c
+@@ -0,0 +1,16 @@
++/* PR target/63810: Test that a version with minor number &lt; 10 and tiny
++   number &gt; 9 produces a four-character macro with the tiny number
++   clamped to 9.  */
++/* Added by Lawrence Velázquez &lt;larryv@macports.org&gt;.  */
++
++/* { dg-options &quot;-mmacosx-version-min=10.9.10&quot; } */
++/* { dg-do compile { target *-*-darwin* } } */
++
++int
++main ()
++{
++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1099
++  fail me;
++#endif
++  return 0;
++}
+Index: gcc/testsuite/gcc.dg/darwin-minversion-6.c
+===================================================================
+--- /dev/null
++++ gcc/testsuite/gcc.dg/darwin-minversion-6.c
+@@ -0,0 +1,15 @@
++/* PR target/63810: Test that tiny numbers are preserved in
++   six-character macros.  */
++/* Added by Lawrence Velázquez &lt;larryv@macports.org&gt;.  */
++
++/* { dg-options &quot;-mmacosx-version-min=10.10.11&quot; } */
++/* { dg-do compile { target *-*-darwin* } } */
++
++int
++main ()
++{
++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 101011
++  fail me;
++#endif
++  return 0;
++}
+Index: gcc/testsuite/gcc.dg/darwin-minversion-7.c
+===================================================================
+--- /dev/null
++++ gcc/testsuite/gcc.dg/darwin-minversion-7.c
+@@ -0,0 +1,15 @@
++/* PR target/63810: Test that tiny numbers &lt; 10 are preserved in
++   four-character macros.  */
++/* Added by Lawrence Velázquez &lt;larryv@macports.org&gt;.  */
++
++/* { dg-options &quot;-mmacosx-version-min=10.9.1&quot; } */
++/* { dg-do compile { target *-*-darwin* } } */
++
++int
++main ()
++{
++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1091
++  fail me;
++#endif
++  return 0;
++}
+Index: gcc/testsuite/gcc.dg/darwin-minversion-8.c
+===================================================================
+--- /dev/null
++++ gcc/testsuite/gcc.dg/darwin-minversion-8.c
+@@ -0,0 +1,15 @@
++/* PR target/63810: Test that a version with minor number &gt; 9 and no
++   tiny number produces a six-character macro ending in &quot;00&quot;.  */
++/* Added by Lawrence Velázquez &lt;larryv@macports.org&gt;.  */
++
++/* { dg-options &quot;-mmacosx-version-min=10.11&quot; } */
++/* { dg-do compile { target *-*-darwin* } } */
++
++int
++main ()
++{
++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 101100
++  fail me;
++#endif
++  return 0;
++}
+Index: gcc/testsuite/gcc.dg/darwin-minversion-9.c
+===================================================================
+--- /dev/null
++++ gcc/testsuite/gcc.dg/darwin-minversion-9.c
+@@ -0,0 +1,15 @@
++/* PR target/63810: Test that a version with a zero-padded minor
++   number &lt; 10 produces a four-character macro.  */
++/* Added by Lawrence Velázquez &lt;larryv@macports.org&gt;.  */
++
++/* { dg-options &quot;-mmacosx-version-min=10.08.4&quot; } */
++/* { dg-do compile { target *-*-darwin* } } */
++
++int
++main ()
++{
++#if __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ != 1084
++  fail me;
++#endif
++  return 0;
++}
</ins></span></pre></div>
<a id="trunkdportslanggcc48filespatch1010diff"></a>
<div class="delfile"><h4>Deleted: trunk/dports/lang/gcc48/files/patch-10.10.diff (128359 => 128360)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/lang/gcc48/files/patch-10.10.diff        2014-11-19 17:56:31 UTC (rev 128359)
+++ trunk/dports/lang/gcc48/files/patch-10.10.diff        2014-11-19 19:17:25 UTC (rev 128360)
</span><span class="lines">@@ -1,52 +0,0 @@
</span><del>-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61407#c16
---- gcc/config/darwin-c.c.orig
-+++ gcc/config/darwin-c.c
-@@ -572,20 +572,31 @@ find_subframework_header (cpp_reader *pfile, const char *header, cpp_dir **dirp)

- /* Return the value of darwin_macosx_version_min suitable for the
-    __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ macro,
--   so '10.4.2' becomes 1040.  The lowest digit is always zero.
--   Print a warning if the version number can't be understood.  */
-+   so '10.4.2' becomes 1040 and '10.10.0' becomes 101000.  The lowest
-+   digit is always zero. Print a warning if the version number
-+   can't be understood.  */
- static const char *
- version_as_macro (void)
- {
--  static char result[] = &quot;1000&quot;;
-+  static char result[7] = &quot;1000&quot;;
-+  int minorDigitIdx;

-   if (strncmp (darwin_macosx_version_min, &quot;10.&quot;, 3) != 0)
-     goto fail;
-   if (! ISDIGIT (darwin_macosx_version_min[3]))
-     goto fail;
--  result[2] = darwin_macosx_version_min[3];
--  if (darwin_macosx_version_min[4] != '\0'
--      &amp;&amp; darwin_macosx_version_min[4] != '.')
-+
-+  minorDigitIdx = 3;
-+  result[2] = darwin_macosx_version_min[minorDigitIdx++];
-+  if (ISDIGIT(darwin_macosx_version_min[minorDigitIdx])) {
-+    /* Starting with 10.10 numeration for mactro changed */
-+    result[3] = darwin_macosx_version_min[minorDigitIdx++];
-+    result[4] = '0';
-+    result[5] = '0';
-+    result[6] = '\0';
-+  }
-+  if (darwin_macosx_version_min[minorDigitIdx] != '\0'
-+      &amp;&amp; darwin_macosx_version_min[minorDigitIdx] != '.')
-     goto fail;

-   return result;
---- gcc/config/darwin-driver.c.orig
-+++ gcc/config/darwin-driver.c
-@@ -57,7 +57,7 @@ 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 &gt; 4 + 9)
-+  if (major_vers &gt; 4 + 10)
-     goto parse_failed;
-   if (*version_p++ != '.')
-     goto parse_failed;
</del></span></pre>
</div>
</div>

</body>
</html>