diff --git a/var/spack/repos/builtin/packages/gcc/darwin/headers-10.13-fix.patch b/var/spack/repos/builtin/packages/gcc/darwin/headers-10.13-fix.patch
new file mode 100644
index 0000000000000000000000000000000000000000..3dbfde0255aa38833f6c162dd22cb30231c4bd58
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gcc/darwin/headers-10.13-fix.patch
@@ -0,0 +1,127 @@
+diff -pur fixincludes/fixincl.x gcc-5.5.0/fixincludes/fixincl.x
+--- a/fixincludes/fixincl.x	2017-01-30 17:08:42.000000000 +0100
++++ b/fixincludes/fixincl.x	2017-12-21 14:34:35.000000000 +0100
+@@ -1,12 +1,12 @@
+ /*  -*- buffer-read-only: t -*- vi: set ro:
+- * 
++ *
+  * DO NOT EDIT THIS FILE   (fixincl.x)
+- * 
+- * It has been AutoGen-ed  January  5, 2017 at 06:05:06 PM by AutoGen 5.16.2
++ *
++ * It has been AutoGen-ed  December 21, 2017 at 02:34:35 PM by AutoGen 5.18.7
+  * From the definitions    inclhack.def
+  * and the template file   fixincl
+  */
+-/* DO NOT SVN-MERGE THIS FILE, EITHER Thu Jan  5 18:05:06 CET 2017
++/* DO NOT SVN-MERGE THIS FILE, EITHER Thu Dec 21 14:34:35 CET 2017
+  *
+  * You must regenerate it.  Use the ./genfixes script.
+  *
+@@ -15,7 +15,7 @@
+  * certain ANSI-incompatible system header files which are fixed to work
+  * correctly with ANSI C and placed in a directory that GNU C will search.
+  *
+- * This file contains 240 fixup descriptions.
++ * This file contains 241 fixup descriptions.
+  *
+  * See README for more information.
+  *
+@@ -2579,6 +2579,43 @@ extern \"C\" {\n\
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
++ *  Description of Darwin_Osavailability fix
++ */
++tSCC zDarwin_OsavailabilityName[] =
++     "darwin_osavailability";
++
++/*
++ *  File name selection pattern
++ */
++tSCC zDarwin_OsavailabilityList[] =
++  "os/availability.h\0";
++/*
++ *  Machine/OS name selection pattern
++ */
++tSCC* apzDarwin_OsavailabilityMachs[] = {
++        "*-*-darwin*",
++        (const char*)NULL };
++
++/*
++ *  content selection pattern - do fix if pattern found
++ */
++tSCC zDarwin_OsavailabilitySelect0[] =
++       "#define[ \t]+__(API_[A-Z_]*)\\(\\.\\.\\.\\)";
++
++#define    DARWIN_OSAVAILABILITY_TEST_CT  1
++static tTestDesc aDarwin_OsavailabilityTests[] = {
++  { TT_EGREP,    zDarwin_OsavailabilitySelect0, (regex_t*)NULL }, };
++
++/*
++ *  Fix Command Arguments for Darwin_Osavailability
++ */
++static const char* apzDarwin_OsavailabilityPatch[] = {
++    "format",
++    "#define %1(...)",
++    (char*)NULL };
++
++/* * * * * * * * * * * * * * * * * * * * * * * * * *
++ *
+  *  Description of Darwin_9_Long_Double_Funcs_2 fix
+  */
+ tSCC zDarwin_9_Long_Double_Funcs_2Name[] =
+@@ -9818,9 +9855,9 @@ static const char* apzX11_SprintfPatch[]
+  *
+  *  List of all fixes
+  */
+-#define REGEX_COUNT          276
++#define REGEX_COUNT          277
+ #define MACH_LIST_SIZE_LIMIT 187
+-#define FIX_COUNT            240
++#define FIX_COUNT            241
+ 
+ /*
+  *  Enumerate the fixes
+@@ -9885,6 +9922,7 @@ typedef enum {
+     CTRL_QUOTES_DEF_FIXIDX,
+     CTRL_QUOTES_USE_FIXIDX,
+     CXX_UNREADY_FIXIDX,
++    DARWIN_OSAVAILABILITY_FIXIDX,
+     DARWIN_9_LONG_DOUBLE_FUNCS_2_FIXIDX,
+     DARWIN_EXTERNC_FIXIDX,
+     DARWIN_GCC4_BREAKAGE_FIXIDX,
+@@ -10364,6 +10402,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
+      CXX_UNREADY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aCxx_UnreadyTests,   apzCxx_UnreadyPatch, 0 },
+ 
++  {  zDarwin_OsavailabilityName,    zDarwin_OsavailabilityList,
++     apzDarwin_OsavailabilityMachs,
++     DARWIN_OSAVAILABILITY_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
++     aDarwin_OsavailabilityTests,   apzDarwin_OsavailabilityPatch, 0 },
++
+   {  zDarwin_9_Long_Double_Funcs_2Name,    zDarwin_9_Long_Double_Funcs_2List,
+      apzDarwin_9_Long_Double_Funcs_2Machs,
+      DARWIN_9_LONG_DOUBLE_FUNCS_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+diff -pur fixincludes/inclhack.def gcc-5.5.0/fixincludes/inclhack.def
+--- a/fixincludes/inclhack.def	2017-01-30 17:08:42.000000000 +0100
++++ b/fixincludes/inclhack.def	2017-12-21 14:34:28.000000000 +0100
+@@ -1337,6 +1337,18 @@ fix = {
+     test_text = "extern void* malloc( size_t );";
+ };
+ 
++fix = {
++    hackname  = darwin_osavailability;
++    mach      = "*-*-darwin*";
++    files     = os/availability.h;
++    select    = "#define[ \t]+__(API_[A-Z_]*)\\(\\.\\.\\.\\)";
++    c_fix     = format;
++    c_fix_arg = "#define %1(...)";
++
++    test_text = "#define __API_AVAILABLE(...)\n"
++		"#define API_AVAILABLE(...)\n";
++};
++
+ /*
+  *  For the AAB_darwin7_9_long_double_funcs fix to be useful,
+  *  you have to not use "" includes.
diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py
index acc7eb36fb426b4238917753109fbe13a8eb8815..d4180d1c501d7884b31765e47e6784941942fc16 100644
--- a/var/spack/repos/builtin/packages/gcc/package.py
+++ b/var/spack/repos/builtin/packages/gcc/package.py
@@ -158,7 +158,11 @@ class Gcc(AutotoolsPackage):
         # Fix parallel build on APFS filesystem
         # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81797
         if macOS_version() >= Version('10.13'):
-            patch('darwin/apfs.patch', when='@6.1:6.4,7.1:7.3')
+            patch('darwin/apfs.patch', when='@5.5.0,6.1:6.4,7.1:7.3')
+            # from homebrew via macports
+            # https://trac.macports.org/ticket/56502#no1
+            # see also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83531
+            patch('darwin/headers-10.13-fix.patch', when='@5.5.0')
         patch('darwin/gcc-7.1.0-headerpad.patch', when='@5:')
         patch('darwin/gcc-6.1.0-jit.patch', when='@5:7')
         patch('darwin/gcc-4.9.patch1', when='@4.9.0:4.9.3')