diff --git a/libc/kernel/tools/clean_header.py b/libc/kernel/tools/clean_header.py
index bed9926..de4bf85 100755
--- a/libc/kernel/tools/clean_header.py
+++ b/libc/kernel/tools/clean_header.py
@@ -69,6 +69,7 @@
     list.removeVarsAndFuncs( statics )
     list.removeComments()
     list.removeEmptyLines()
+    list.removeMacroDefines( kernel_ignored_macros )
     list.insertDisclaimer( kernel.kernel_disclaimer )
 
     out = StringOutput()
diff --git a/libc/kernel/tools/cpp.py b/libc/kernel/tools/cpp.py
index 54ebaf4..4b4bd38 100644
--- a/libc/kernel/tools/cpp.py
+++ b/libc/kernel/tools/cpp.py
@@ -1571,6 +1571,13 @@
         """returns True iff this is a conditional directive block"""
         return self.directive in ["if","ifdef","ifndef","else","elif","endif"]
 
+    def isDefine(self):
+        """returns the macro name in a #define directive, or None otherwise"""
+        if self.directive != "define":
+            return None
+
+        return self.tokens[0].value
+
     def isIf(self):
         """returns True iff this is an #if-like directive block"""
         return self.directive in ["if","ifdef","ifndef","elif"]
@@ -1678,6 +1685,10 @@
             if b.isIf():
                 b.expr.optimize(macros)
 
+    def removeMacroDefines(self,macros):
+        """remove known macro definitions from a BlockList"""
+        self.blocks = remove_macro_defines(self.blocks,macros)
+
     def removePrefixed(self,prefix,names):
         for b in self.blocks:
             if b.isIf():
@@ -1994,6 +2005,16 @@
 #####################################################################################
 #####################################################################################
 
+def  remove_macro_defines( blocks, excludedMacros=set() ):
+    """remove macro definitions like #define <macroName>  ...."""
+    result = []
+    for b in blocks:
+        macroName = b.isDefine()
+        if macroName == None or not macroName in excludedMacros:
+            result.append(b)
+
+    return result
+
 def  find_matching_endif( blocks, i ):
     n     = len(blocks)
     depth = 1
diff --git a/libc/kernel/tools/defaults.py b/libc/kernel/tools/defaults.py
index da78b87..aad0092 100644
--- a/libc/kernel/tools/defaults.py
+++ b/libc/kernel/tools/defaults.py
@@ -73,6 +73,17 @@
         "x86" : kernel_known_x86_statics
     }
 
+# this is a list of macros which we want to specifically exclude from
+# the generated files.
+#
+kernel_ignored_macros = set(
+        [ "MAXHOSTNAMELEN",  # for some reason, Linux defines it to 64
+                             # while most of the BSD code expects this to be 256
+                             # so ignore the kernel-provided definition and
+                             # define it in the Bionic headers instead
+        ]
+    )
+
 # this is the standard disclaimer
 #
 kernel_disclaimer = """\
