diff --git a/libc/tools/genfunctosyscallnrs.py b/libc/tools/genfunctosyscallnrs.py
index 6a456f2..ecfc8ab 100755
--- a/libc/tools/genfunctosyscallnrs.py
+++ b/libc/tools/genfunctosyscallnrs.py
@@ -8,7 +8,7 @@
 import subprocess
 import textwrap
 
-from gensyscalls import SysCallsTxtParser
+from gensyscalls import SupportedArchitectures, SysCallsTxtParser
 from genseccomp import parse_syscall_NRs
 
 def load_syscall_names_from_file(file_path, architecture):
@@ -22,7 +22,7 @@
   return arch_map
 
 def gen_syscall_nrs(out_file, base_syscall_file, syscall_NRs):
-  for arch in ('arm', 'arm64', 'mips', 'mips64', 'x86', 'x86_64'):
+  for arch in SupportedArchitectures:
     base_names = load_syscall_names_from_file(base_syscall_file, arch)
 
     for func,syscall in base_names.iteritems():
diff --git a/libc/tools/genseccomp.py b/libc/tools/genseccomp.py
index 365e198..cc0ff99 100755
--- a/libc/tools/genseccomp.py
+++ b/libc/tools/genseccomp.py
@@ -8,7 +8,7 @@
 import subprocess
 import textwrap
 
-from gensyscalls import SysCallsTxtParser
+from gensyscalls import SupportedArchitectures, SysCallsTxtParser
 
 
 BPF_JGE = "BPF_JUMP(BPF_JMP|BPF_JGE|BPF_K, {0}, {1}, {2})"
@@ -181,7 +181,7 @@
 
 
 def gen_policy(name_modifier, out_dir, base_syscall_file, syscall_files, syscall_NRs):
-  for arch in ('arm', 'arm64', 'mips', 'mips64', 'x86', 'x86_64'):
+  for arch in SupportedArchitectures:
     base_names = load_syscall_names_from_file(base_syscall_file, arch)
     whitelist_names = set()
     blacklist_names = set()
@@ -215,7 +215,7 @@
   parser.add_argument("--verbose", "-v", help="Enables verbose logging.")
   parser.add_argument("--name-modifier",
                       help=("Specifies the name modifier for the policy. "
-                            "One of {app,global,system}."))
+                            "One of {app,system}."))
   parser.add_argument("--out-dir",
                       help="The output directory for the policy files")
   parser.add_argument("base_file", metavar="base-file", type=str,
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index 0f3f1dc..d863e20 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -17,7 +17,7 @@
 import tempfile
 
 
-all_arches = [ "arm", "arm64", "mips", "mips64", "x86", "x86_64" ]
+SupportedArchitectures = [ "arm", "arm64", "mips", "mips64", "x86", "x86_64" ]
 
 bionic_libc = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")
 
@@ -456,19 +456,19 @@
         # Parse the architecture list.
         arch_list = line[pos_rparen+1:].strip()
         if arch_list == "all":
-            for arch in all_arches:
+            for arch in SupportedArchitectures:
                 t[arch] = True
         elif arch_list == "lp32":
-            for arch in all_arches:
+            for arch in SupportedArchitectures:
                 if "64" not in arch:
                     t[arch] = True
         elif arch_list == "lp64":
-            for arch in all_arches:
+            for arch in SupportedArchitectures:
                 if "64" in arch:
                     t[arch] = True
         else:
             for arch in string.split(arch_list, ','):
-                if arch in all_arches:
+                if arch in SupportedArchitectures:
                     t[arch] = True
                 else:
                     E("invalid syscall architecture '%s' in '%s'" % (arch, line))
