diff --git a/build/fidl/fidl.gni b/build/fidl/fidl.gni
index d9c4d39..6cc5692 100644
--- a/build/fidl/fidl.gni
+++ b/build/fidl/fidl.gni
@@ -83,40 +83,23 @@
          "All FIDL dependencies are inherently " +
              "public, use 'public_deps' instead of 'deps'.")
 
-  additional_deps = []
-  if (target_name != "zx") {
-    additional_deps += [ "//zircon/vdso/zx" ]
-  }
-
   if (current_toolchain == dart_toolchain) {
     import("//build/dart/fidl_dart.gni")
 
     fidl_dart(target_name) {
       forward_variables_from(invoker, "*")
-      if (!defined(public_deps)) {
-        public_deps = []
-      }
-      public_deps += additional_deps
     }
   } else if (current_toolchain == rust_toolchain) {
     import("//build/rust/fidl_rust.gni")
 
     fidl_rust(target_name) {
       forward_variables_from(invoker, "*")
-      if (!defined(public_deps)) {
-        public_deps = []
-      }
-      public_deps += additional_deps
     }
   } else if (current_toolchain == go_toolchain) {
     import("//build/go/fidl_go.gni")
 
     fidl_go(target_name) {
       forward_variables_from(invoker, "*")
-      if (!defined(public_deps)) {
-        public_deps = []
-      }
-      public_deps += additional_deps
     }
   } else {
     import("//build/c/fidl_c.gni")
@@ -159,13 +142,8 @@
       if (defined(invoker.excluded_checks)) {
         excluded_checks = invoker.excluded_checks
       }
-
       fidl_library(target_name) {
         forward_variables_from(invoker, "*")
-        if (!defined(public_deps)) {
-          public_deps = []
-        }
-        public_deps += additional_deps
       }
     }
 
@@ -190,10 +168,6 @@
 
     fidl_cpp(target_name) {
       forward_variables_from(invoker, "*")
-      if (!defined(public_deps)) {
-        public_deps = []
-      }
-      public_deps += additional_deps
       generators = [
         {
           fidlgen_tool = "//garnet/go/src/fidl:fidlgen_hlcpp"
@@ -228,27 +202,15 @@
     # TODO(cramertj): remove pending TC-81.
     fidl_rust_library(target_name) {
       forward_variables_from(invoker, "*")
-      if (!defined(public_deps)) {
-        public_deps = []
-      }
-      public_deps += additional_deps
     }
 
     if (is_fuchsia) {
       fidl_c_client(target_name) {
         forward_variables_from(invoker, "*")
-        if (!defined(public_deps)) {
-          public_deps = []
-        }
-        public_deps += additional_deps
       }
 
       fidl_c_server(target_name) {
         forward_variables_from(invoker, "*")
-        if (!defined(public_deps)) {
-          public_deps = []
-        }
-        public_deps += additional_deps
       }
 
       group("${target_name}_c") {
diff --git a/docs/development/languages/fidl/reference/library-zx.md b/docs/development/languages/fidl/reference/library-zx.md
index 60100d9..3893760 100644
--- a/docs/development/languages/fidl/reference/library-zx.md
+++ b/docs/development/languages/fidl/reference/library-zx.md
@@ -1,12 +1,29 @@
 
 # FIDL internal library zx
 
-The `zx` library is is defined by
-[//zircon/vdso/zx_common.fidl](/zircon/vdso/zx_common.fidl). It is included by
-GN build rules into invocations of `fidlc` when building fidl code and need not
-be explicitly depended upon by every fidl library. If invoking `fidlc` directly,
-`zx_common.fidl` would need to be included with a `--files` argument if
-necessary.
+The `fidlc` compiler automatically generates `library zx` (internally) into
+[//zircon/tools/fidl/lib/library_zx.cc](/zircon/tools/fidl/lib/library_zx.cc).
+
+You will find content similar to the following:
+
+```fidl
+[Internal]
+library zx;
+using status = int32;
+using time = int64;
+using duration = int64;
+using koid = uint64;
+using vaddr = uint64;
+using paddr = uint64;
+using paddr32 = uint32;
+using gpaddr = uint64;
+using off = uint64;
+using procarg = uint32;
+const uint64 CHANNEL_MAX_MSG_BYTES = 65536;
+const uint64 CHANNEL_MAX_MSG_HANDLES = 64;
+const uint64 MAX_NAME_LEN = 32;
+const uint64 MAX_CPUS = 512;
+```
 
 You can reference this library with the `using` statement:
 
diff --git a/scripts/sdk/gn/templates/fidl_library.mako b/scripts/sdk/gn/templates/fidl_library.mako
index 38ac0b8..ce83cff 100644
--- a/scripts/sdk/gn/templates/fidl_library.mako
+++ b/scripts/sdk/gn/templates/fidl_library.mako
@@ -4,9 +4,7 @@
 
 fidl_library("${data.name}") {
   library_name = "${data.short_name}"
-  % if data.namespace:
   namespace = "${data.namespace}"
-  % endif
   public_deps = [
     % for dep in sorted(data.deps):
     "../${dep}",
diff --git a/sdk/core.api b/sdk/core.api
index 1ae64eb..34a36d0 100644
--- a/sdk/core.api
+++ b/sdk/core.api
@@ -102,7 +102,6 @@
 sdk://fidl/fuchsia.wlan.policy
 sdk://fidl/fuchsia.wlan.service
 sdk://fidl/fuchsia.wlan.stats
-sdk://fidl/zx
 sdk://pkg/async
 sdk://pkg/async-cpp
 sdk://pkg/async-default
diff --git a/sdk/fidl/zx/zx.api b/sdk/fidl/zx/zx.api
deleted file mode 100644
index 58a168d..0000000
--- a/sdk/fidl/zx/zx.api
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "fidl/zx/zx_common.fidl": "b3996a6005d3c88c5ba5b6fd286ed2fb"
-}
\ No newline at end of file
diff --git a/sdk/fuchsia_dart.api b/sdk/fuchsia_dart.api
index b6dc38a..94162a4 100644
--- a/sdk/fuchsia_dart.api
+++ b/sdk/fuchsia_dart.api
@@ -39,7 +39,6 @@
 sdk://fidl/fuchsia.ui.views
 sdk://fidl/fuchsia.url
 sdk://fidl/fuchsia.web
-sdk://fidl/zx
 sdk://tools/dart_kernel_compiler
 sdk://tools/fidlgen_dart
 sdk://tools/gen_snapshot
\ No newline at end of file
diff --git a/sdk/modular_testing.api b/sdk/modular_testing.api
index 512322f..115bcca 100644
--- a/sdk/modular_testing.api
+++ b/sdk/modular_testing.api
@@ -17,7 +17,6 @@
 sdk://fidl/fuchsia.ui.lifecycle
 sdk://fidl/fuchsia.ui.policy
 sdk://fidl/fuchsia.ui.views
-sdk://fidl/zx
 sdk://pkg/async
 sdk://pkg/async-cpp
 sdk://pkg/async-default
diff --git a/zircon/public/gn/fidl.gni b/zircon/public/gn/fidl.gni
index 8d54340..e51a843 100644
--- a/zircon/public/gn/fidl.gni
+++ b/zircon/public/gn/fidl.gni
@@ -239,13 +239,8 @@
   fidl_name = string_replace(fidl_target, "-", ".")
   fidl_path = string_replace(fidl_name, ".", "/")
 
-  fidl_library_deps = []
-
-  if (target_name != "zx") {
-    fidl_library_deps += [ get_label_info("$zx/vdso/zx", "label_no_toolchain") ]
-  }
-
   # Collect the dependencies on other FIDL libraries, and canonicalize them.
+  fidl_library_deps = []
   if (defined(invoker.public_deps)) {
     foreach(label, invoker.public_deps) {
       assert(get_label_info(label, "toolchain") == current_toolchain,
@@ -300,13 +295,6 @@
                                "visibility",
                                "testonly",
                              ])
-      if (target_name != "zx") {
-        if (!defined(public_deps)) {
-          public_deps = []
-        }
-        public_deps += [ "$zx/vdso/zx" ]
-      }
-
       if (defined(visibility)) {
         visibility += [ ":$files_rspfile_target" ]
       }
diff --git a/zircon/system/public/zircon/types.h b/zircon/system/public/zircon/types.h
index c98d9f5..10faebb 100644
--- a/zircon/system/public/zircon/types.h
+++ b/zircon/system/public/zircon/types.h
@@ -261,8 +261,6 @@
 } zx_iovec_t;
 
 // Maximum string length for kernel names (process name, thread name, etc)
-// TODO(fxbug.dev/7802): This must be manually kept in sync with zx_common.fidl.
-// Eventually (some of) this file will be generated from //zircon/vdso.
 #define ZX_MAX_NAME_LEN              ((size_t)32u)
 
 // Buffer size limits on the cprng syscalls
@@ -295,8 +293,6 @@
 // Channel options and limits.
 #define ZX_CHANNEL_READ_MAY_DISCARD         ((uint32_t)1u)
 
-// TODO(fxbug.dev/7802): This must be manually kept in sync with zx_common.fidl.
-// Eventually (some of) this file will be generated from //zircon/vdso.
 #define ZX_CHANNEL_MAX_MSG_BYTES            ((uint32_t)65536u)
 #define ZX_CHANNEL_MAX_MSG_HANDLES          ((uint32_t)64u)
 
@@ -457,8 +453,6 @@
 // CPU masks specifying sets of CPUs.
 //
 // We currently are limited to systems with 512 CPUs or less.
-// TODO(fxbug.dev/7802): This must be manually kept in sync with zx_common.fidl.
-// Eventually (some of) this file will be generated from //zircon/vdso.
 #define ZX_CPU_SET_MAX_CPUS 512
 #define ZX_CPU_SET_BITS_PER_WORD 64
 
diff --git a/zircon/system/ulib/c/BUILD.gn b/zircon/system/ulib/c/BUILD.gn
index caf1545..77655f9 100644
--- a/zircon/system/ulib/c/BUILD.gn
+++ b/zircon/system/ulib/c/BUILD.gn
@@ -158,8 +158,7 @@
             "../../vdso/vcpu.fidl",
             "../../vdso/vmar.fidl",
             "../../vdso/vmo.fidl",
-            "../../vdso/zx_common.fidl",
-            "../../vdso/zx_syscall.fidl",
+            "../../vdso/zx.fidl",
           ]
           if (!exclude_testonly_syscalls) {
             headers += [ "zircon/testonly-syscalls.h" ]
diff --git a/zircon/tools/fidl/BUILD.gn b/zircon/tools/fidl/BUILD.gn
index 6902635..51e1c99 100644
--- a/zircon/tools/fidl/BUILD.gn
+++ b/zircon/tools/fidl/BUILD.gn
@@ -28,6 +28,7 @@
       "lib/formatter.cc",
       "lib/json_generator.cc",
       "lib/lexer.cc",
+      "lib/library_zx.cc",
       "lib/linter.cc",
       "lib/linting_tree_callbacks.cc",
       "lib/names.cc",
@@ -191,6 +192,7 @@
       "lib/formatter.cc",
       "lib/json_generator.cc",
       "lib/lexer.cc",
+      "lib/library_zx.cc",
       "lib/linter.cc",
       "lib/names.cc",
       "lib/parser.cc",
diff --git a/zircon/tools/fidl/compiler/main.cc b/zircon/tools/fidl/compiler/main.cc
index a9897b87..1181a66 100644
--- a/zircon/tools/fidl/compiler/main.cc
+++ b/zircon/tools/fidl/compiler/main.cc
@@ -22,6 +22,7 @@
 #include <fidl/json_generator.h>
 #include <fidl/json_schema.h>
 #include <fidl/lexer.h>
+#include <fidl/library_zx.h>
 #include <fidl/names.h>
 #include <fidl/parser.h>
 #include <fidl/source_manager.h>
@@ -342,6 +343,10 @@
   // Prepare source files.
   std::vector<fidl::SourceManager> source_managers;
   source_managers.push_back(fidl::SourceManager());
+  std::string library_zx_data = fidl::LibraryZX::kData;
+  source_managers.back().AddSourceFile(
+      std::make_unique<fidl::SourceFile>(fidl::LibraryZX::kFilename, std::move(library_zx_data)));
+  source_managers.push_back(fidl::SourceManager());
   while (args->Remaining()) {
     std::string arg = args->Claim();
     if (arg == "--files") {
diff --git a/zircon/tools/fidl/include/fidl/library_zx.h b/zircon/tools/fidl/include/fidl/library_zx.h
new file mode 100644
index 0000000..f3680cd
--- /dev/null
+++ b/zircon/tools/fidl/include/fidl/library_zx.h
@@ -0,0 +1,19 @@
+// Copyright 2018 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ZIRCON_TOOLS_FIDL_INCLUDE_FIDL_LIBRARY_ZX_H_
+#define ZIRCON_TOOLS_FIDL_INCLUDE_FIDL_LIBRARY_ZX_H_
+
+#include <string>
+
+namespace fidl {
+namespace LibraryZX {
+
+extern const std::string kFilename;
+extern const std::string kData;
+
+}  // namespace LibraryZX
+}  // namespace fidl
+
+#endif  // ZIRCON_TOOLS_FIDL_INCLUDE_FIDL_LIBRARY_ZX_H_
diff --git a/zircon/tools/fidl/lib/library_zx.cc b/zircon/tools/fidl/lib/library_zx.cc
new file mode 100644
index 0000000..ad203fb
--- /dev/null
+++ b/zircon/tools/fidl/lib/library_zx.cc
@@ -0,0 +1,52 @@
+// Copyright 2018 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "fidl/library_zx.h"
+
+#include <sstream>
+// TODO(FIDL-478): make fidlc not depend on zircon
+#include <zircon/types.h>
+
+namespace fidl {
+namespace LibraryZX {
+
+const std::string kFilename = "zx.fidl";
+
+namespace {
+std::string GenerateData() {
+  std::ostringstream out;
+
+  // Please be sure to update the documentation about this library at the
+  // location //docs/development/languages/fidl/reference/library-zx.md
+
+  out <<
+      R"FIDL(
+[Internal]
+library zx;
+
+using status = int32;
+using time = int64;
+using duration = int64;
+using koid = uint64;
+using vaddr = uint64;
+using paddr = uint64;
+using paddr32 = uint32;
+using gpaddr = uint64;
+using off = uint64;
+using procarg = uint32;
+)FIDL";
+
+  out << "const uint64 CHANNEL_MAX_MSG_BYTES = " << ZX_CHANNEL_MAX_MSG_BYTES << ";\n";
+  out << "const uint64 CHANNEL_MAX_MSG_HANDLES = " << ZX_CHANNEL_MAX_MSG_HANDLES << ";\n";
+  out << "const uint64 MAX_NAME_LEN = " << ZX_MAX_NAME_LEN << ";\n";
+  out << "const uint64 MAX_CPUS = " << ZX_CPU_SET_MAX_CPUS << ";\n";
+
+  return out.str();
+}
+}  // namespace
+
+const std::string kData = GenerateData();
+
+}  // namespace LibraryZX
+}  // namespace fidl
diff --git a/zircon/tools/kazoo/BUILD.gn b/zircon/tools/kazoo/BUILD.gn
index 43fcb63..297fba6 100644
--- a/zircon/tools/kazoo/BUILD.gn
+++ b/zircon/tools/kazoo/BUILD.gn
@@ -105,8 +105,6 @@
       rebase_path("$target_gen_dir") + "/{{source_name_part}}.json",
       "--files",
       "{{source}}",
-      rebase_path("$zx/vdso/zx_common.fidl"),
-      rebase_path("$zx/vdso/zx_syscall.fidl"),
     ]
 
     outputs = [ "$target_gen_dir/{{source_name_part}}.json" ]
@@ -127,40 +125,19 @@
       "test_rights_specs.test.fidl",
       "test_rust_selection.test.fidl",
       "test_selection.test.fidl",
-      "test_various_categories.test.fidl",
-      "test_vdsowrappers.test.fidl",
-    ]
-  }
-
-  host_tool_action_foreach("test_files_fidl_to_json_zxio") {
-    tool = "$zx/tools/fidl:fidlc"
-
-    args = [
-      "--json",
-      rebase_path("$target_gen_dir") + "/{{source_name_part}}.json",
-      "--files",
-      "{{source}}",
-
-      # No zx fidls here compared with above.
-    ]
-
-    outputs = [ "$target_gen_dir/{{source_name_part}}.json" ]
-
-    sources = [
       "test_ulib_bits.test.fidl",
       "test_ulib_enums.test.fidl",
       "test_ulib_tables.test.fidl",
       "test_ulib_type_aliases.test.fidl",
+      "test_various_categories.test.fidl",
+      "test_vdsowrappers.test.fidl",
     ]
   }
 
   action_foreach("generate_test_files") {
     script = "fidl_to_h.py"
 
-    deps = [
-      ":test_files_fidl_to_json",
-      ":test_files_fidl_to_json_zxio",
-    ]
+    deps = [ ":test_files_fidl_to_json" ]
 
     args = [
       "{{source}}",
@@ -170,7 +147,6 @@
 
     outputs = [ "$target_gen_dir/test_ir_{{source_name_part}}.h" ]
 
-    sources = get_target_outputs(":test_files_fidl_to_json") +
-              get_target_outputs(":test_files_fidl_to_json_zxio")
+    sources = get_target_outputs(":test_files_fidl_to_json")
   }
 }
diff --git a/zircon/tools/kazoo/README.md b/zircon/tools/kazoo/README.md
index 8974000..6acc04a 100644
--- a/zircon/tools/kazoo/README.md
+++ b/zircon/tools/kazoo/README.md
@@ -18,7 +18,11 @@
 - The attribute `[Transport="Syscall"]` must be applied to all protocols that are part of the
   syscall interface.
 
-- All .fidl files must be part of `library zx` (for syscalls) or `library zxio`.
+- All .fidl files must be part of `library zz` or `library zx`. "zx" is currently used by
+  FIDL-proper to magically define the existing defintions of some basic types, e.g. `zx.status` that
+  are used by other FIDL files. Because of this "zz" is used for the new syscall definitions. In the
+  future, Kazoo will accept only `library zx`, and the automatically generated "zx" and the syscalls
+  in "zz" will be merged into "zx" that will all appear in source `.fidl` files.
 
 - Type aliases used to impart meaning. `alias_workarounds.fidl` includes various aliases that expand
   to something similar to the correct type, however Kazoo treats these specially. For example,
diff --git a/zircon/tools/kazoo/alias_workaround.cc b/zircon/tools/kazoo/alias_workaround.cc
index cc2c2d5..13d404b 100644
--- a/zircon/tools/kazoo/alias_workaround.cc
+++ b/zircon/tools/kazoo/alias_workaround.cc
@@ -32,13 +32,13 @@
     return true;
   }
   if (name == "mutable_vector_HandleDisposition_u32size") {
-    *type = Type(TypeVector(Type(library.TypeFromIdentifier("zx/HandleDisposition")),
+    *type = Type(TypeVector(Type(library.TypeFromIdentifier("zz/HandleDisposition")),
                             UseUint32ForVectorSizeTag{}),
                  Constness::kMutable);
     return true;
   }
   if (name == "mutable_vector_WaitItem") {
-    *type = Type(TypeVector(Type(library.TypeFromIdentifier("zx/WaitItem"))), Constness::kMutable);
+    *type = Type(TypeVector(Type(library.TypeFromIdentifier("zz/WaitItem"))), Constness::kMutable);
     return true;
   }
   if (name == "mutable_vector_handle_u32size") {
@@ -55,12 +55,12 @@
     return true;
   }
   if (name == "optional_PciBar") {
-    *type = Type(library.TypeFromIdentifier("zx/PciBar").type_data(), Constness::kUnspecified,
+    *type = Type(library.TypeFromIdentifier("zz/PciBar").type_data(), Constness::kUnspecified,
                  Optionality::kOutputOptional);
     return true;
   }
   if (name == "optional_PortPacket") {
-    *type = Type(library.TypeFromIdentifier("zx/PortPacket").type_data(), Constness::kUnspecified,
+    *type = Type(library.TypeFromIdentifier("zz/PortPacket").type_data(), Constness::kUnspecified,
                  Optionality::kOutputOptional);
     return true;
   }
@@ -91,7 +91,7 @@
   }
   if (name == "vector_HandleInfo_u32size") {
     *type = Type(
-        TypeVector(Type(library.TypeFromIdentifier("zx/HandleInfo")), UseUint32ForVectorSizeTag{}),
+        TypeVector(Type(library.TypeFromIdentifier("zz/HandleInfo")), UseUint32ForVectorSizeTag{}),
         Constness::kConst);
     return true;
   }
diff --git a/zircon/tools/kazoo/alias_workaround_test.cc b/zircon/tools/kazoo/alias_workaround_test.cc
index ea4f7afc..5fe2e85 100644
--- a/zircon/tools/kazoo/alias_workaround_test.cc
+++ b/zircon/tools/kazoo/alias_workaround_test.cc
@@ -13,7 +13,7 @@
   SyscallLibrary library;
   ASSERT_TRUE(SyscallLibraryLoader::FromJson(k_test_aliases, &library));
 
-  EXPECT_EQ(library.name(), "zx");
+  EXPECT_EQ(library.name(), "zz");
   ASSERT_EQ(library.syscalls().size(), 1u);
 
   const auto& sc = library.syscalls()[0];
diff --git a/zircon/tools/kazoo/syscall_library.cc b/zircon/tools/kazoo/syscall_library.cc
index 528bff1..ee4e0bf 100644
--- a/zircon/tools/kazoo/syscall_library.cc
+++ b/zircon/tools/kazoo/syscall_library.cc
@@ -135,7 +135,7 @@
     // the front end (fidlc) and 2) we move various parts of zx.fidl from being built-in to fidlc to
     // actual source level fidl and shared between the syscall definitions and normal FIDL.
     const std::string full_name((*type_alias)["name"].GetString());
-    if (full_name.substr(0, 3) == "zx/") {
+    if (full_name.substr(0, 3) == "zx/" || full_name.substr(0, 3) == "zz/") {
       const std::string name = full_name.substr(3);
       if (name == "duration" || name == "Futex" || name == "koid" || name == "paddr" ||
           name == "rights" || name == "signals" || name == "status" || name == "time" ||
@@ -441,8 +441,9 @@
   }
 
   library->name_ = document["name"].GetString();
-  if (library->name_ != "zx" && library->name_ != "zxio") {
-    fprintf(stderr, "Library name %s wasn't zx or zxio as expected.\n", library->name_.c_str());
+  if (library->name_ != "zz" && library->name_ != "zx" && library->name_ != "zxio") {
+    fprintf(stderr, "Library name %s wasn't zz or zx or zxio as expected.\n",
+            library->name_.c_str());
     return false;
   }
 
diff --git a/zircon/tools/kazoo/syscall_library_test.cc b/zircon/tools/kazoo/syscall_library_test.cc
index 27cfc1d6..59f8d53 100644
--- a/zircon/tools/kazoo/syscall_library_test.cc
+++ b/zircon/tools/kazoo/syscall_library_test.cc
@@ -15,18 +15,18 @@
 TEST(SyscallLibrary, LoaderSimpleEmpty) {
   SyscallLibrary library;
   ASSERT_TRUE(SyscallLibraryLoader::FromJson(k_test_no_methods, &library));
-  EXPECT_EQ(library.name(), "zx");
+  EXPECT_EQ(library.name(), "zz");
   EXPECT_TRUE(library.syscalls().empty());
 }
 
 TEST(SyscallLibrary, LoaderSingleMethod) {
   SyscallLibrary library;
   ASSERT_TRUE(SyscallLibraryLoader::FromJson(k_test_one_protocol_one_method, &library));
-  EXPECT_EQ(library.name(), "zx");
+  EXPECT_EQ(library.name(), "zz");
   ASSERT_EQ(library.syscalls().size(), 1u);
 
   const auto& sc = library.syscalls()[0];
-  EXPECT_EQ(sc->id(), "zx/Single");
+  EXPECT_EQ(sc->id(), "zz/Single");
   EXPECT_EQ(sc->original_name(), "DoThing");
   EXPECT_EQ(sc->category(), "single");
   EXPECT_EQ(sc->name(), "single_do_thing");
@@ -47,7 +47,7 @@
 TEST(SyscallLibrary, LoaderVectors) {
   SyscallLibrary library;
   ASSERT_TRUE(SyscallLibraryLoader::FromJson(k_test_pointers_and_vectors, &library));
-  EXPECT_EQ(library.name(), "zx");
+  EXPECT_EQ(library.name(), "zz");
   ASSERT_EQ(library.syscalls().size(), 3u);
 
   const auto& sc0 = library.syscalls()[0];
@@ -73,7 +73,7 @@
   ASSERT_TRUE(
       SyscallLibraryLoader::FromJson(k_test_kernelwrappers, &library1));
   library1.FilterSyscalls(std::set<std::string>());
-  EXPECT_EQ(library1.name(), "zx");
+  EXPECT_EQ(library1.name(), "zz");
   ASSERT_EQ(library1.syscalls().size(), 8u);
   bool debug_found = false;
   for (const auto& sc : library1.syscalls()) {
@@ -89,7 +89,7 @@
       SyscallLibraryLoader::FromJson(k_test_kernelwrappers, &library2));
   std::set<std::string> exclude1{"testonly"};
   library2.FilterSyscalls(exclude1);
-  EXPECT_EQ(library2.name(), "zx");
+  EXPECT_EQ(library2.name(), "zz");
   ASSERT_EQ(library2.syscalls().size(), 7u);
   bool testonly_found = false;
   for (const auto& sc : library2.syscalls()) {
@@ -106,7 +106,7 @@
       SyscallLibraryLoader::FromJson(k_test_kernelwrappers, &library3));
   std::set<std::string> exclude2{"testonly", "noreturn"};
   library3.FilterSyscalls(exclude2);
-  EXPECT_EQ(library3.name(), "zx");
+  EXPECT_EQ(library3.name(), "zz");
   ASSERT_EQ(library3.syscalls().size(), 6u);
   bool stripped_found = false;
   for (const auto& sc : library3.syscalls()) {
diff --git a/zircon/tools/kazoo/test_aliases.test.fidl b/zircon/tools/kazoo/test_aliases.test.fidl
index add3d450..3109bad8 100644
--- a/zircon/tools/kazoo/test_aliases.test.fidl
+++ b/zircon/tools/kazoo/test_aliases.test.fidl
@@ -2,7 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 // Mirrors alias_workarounds[.test].fidl. We don't want to pull real syscalls
 // into the test data, so these are copied here. The structs and basic types
@@ -14,6 +16,11 @@
 struct PciBar {};
 struct PortPacket {};
 struct WaitItem {};
+using koid = uint64;
+using paddr = uint64;
+using signals = uint32;
+using time = int64;
+using usize = uint64;
 
 using charptr = uint64;
 using const_futexptr = int32;
@@ -62,7 +69,7 @@
              vector_void o,
              vector_void_u32size p,
              voidptr q) ->
-        (status status,
+        (zx.status status,
          optional_PciBar r,
          optional_PortPacket s,
          optional_koid t,
diff --git a/zircon/tools/kazoo/test_go_nonblocking.test.fidl b/zircon/tools/kazoo/test_go_nonblocking.test.fidl
index 5f755cf..7b539f6 100644
--- a/zircon/tools/kazoo/test_go_nonblocking.test.fidl
+++ b/zircon/tools/kazoo/test_go_nonblocking.test.fidl
@@ -2,7 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 [Transport="Syscall", NoProtocolPrefix]
 protocol SpecialNonBlocking {
@@ -10,8 +12,8 @@
     // blocking.
 
     [blocking]
-    FutexWait(uint32 a) -> (status status);
+    FutexWait(uint32 a) -> (zx.status status);
 
     [blocking]
-    Nanosleep(uint32 a) -> (status status);
+    Nanosleep(uint32 a) -> (zx.status status);
 };
diff --git a/zircon/tools/kazoo/test_go_reserved_words.test.fidl b/zircon/tools/kazoo/test_go_reserved_words.test.fidl
index dcfe36a..b8eacf9 100644
--- a/zircon/tools/kazoo/test_go_reserved_words.test.fidl
+++ b/zircon/tools/kazoo/test_go_reserved_words.test.fidl
@@ -2,7 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 struct PciBar {
     uint32 unused;
@@ -20,7 +22,7 @@
 protocol ReservedWords {
     // These argument names can't used as identifiers in Go, make sure they're
     // remapped to something else.
-    MyFunc(uint32 type, uint32 func, uint32 g) -> (status status);
+    MyFunc(uint32 type, uint32 func, uint32 g) -> (zx.status status);
 
-    PciTypes(PciBar bar, PciInitArg initarg, PcieDeviceInfo device_info) -> (status status);
+    PciTypes(PciBar bar, PciInitArg initarg, PcieDeviceInfo device_info) -> (zx.status status);
 };
diff --git a/zircon/tools/kazoo/test_kernel_cases.test.fidl b/zircon/tools/kazoo/test_kernel_cases.test.fidl
index dc40e93..ad58386 100644
--- a/zircon/tools/kazoo/test_kernel_cases.test.fidl
+++ b/zircon/tools/kazoo/test_kernel_cases.test.fidl
@@ -2,13 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 // This file is copies of some syscalls that were interesting for the kernel
 // header generator.
 
 using mutable_vector_void = vector<handle>;
 using optional_uint32 = uint32;
+using paddr = uint64;
 using vector_handle_u32size = vector<byte>;
 using vector_paddr = vector<paddr>;
 using vector_void_u32size = vector<byte>;
@@ -22,7 +25,7 @@
            handle<vmo> vmo,
            uint64 offset,
            uint64 size) ->
-        (status status, vector_paddr addrs, handle<pmt> pmt);
+        (zx.status status, vector_paddr addrs, handle<pmt> pmt);
 
     // Still have NORETURN markup for kernel (but only this one).
     [noreturn]
@@ -34,18 +37,18 @@
             uint32 action,
             uint32 options,
             mutable_vector_void ptr) ->
-        (status status);
+        (zx.status status);
 
     // vector of handles isn't turned into user_out_handle*, rather stays as
     // user_out_ptr<zx_handle_t>, because it's not just one.
     Read(handle<channel> handle,
          uint32 options) ->
-        (status status,
+        (zx.status status,
          vector_void_u32size bytes,
          vector_handle_u32size handles,
          optional_uint32 actual_bytes,
          optional_uint32 actual_handles);
 
     [testonly]
-    compiled_out_in_non_test(int32 a, int32 b) -> (status status);
+    compiled_out_in_non_test(int32 a, int32 b) -> (zx.status status);
 };
diff --git a/zircon/tools/kazoo/test_kernelwrappers.test.fidl b/zircon/tools/kazoo/test_kernelwrappers.test.fidl
index a01458c..0e21029 100644
--- a/zircon/tools/kazoo/test_kernelwrappers.test.fidl
+++ b/zircon/tools/kazoo/test_kernelwrappers.test.fidl
@@ -2,8 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
 
+using zx;
+
+using time = int64;
+using ticks = int64;
 using mutable_vector_void = vector<byte>;
 
 [Transport="Syscall"]
@@ -11,7 +15,7 @@
     // Simple out ptr.
     SimpleCase() -> (time time);
 
-    MultipleInHandles(vector<handle> handles) -> (status status);
+    MultipleInHandles(vector<handle> handles) -> (zx.status status);
 
     // vdsocall excluded.
     [vdsocall]
@@ -27,15 +31,15 @@
             uint64 offset,
             uint64 size,
             mutable_vector_void buffer) ->
-        (status status);
+        (zx.status status);
 
     // Output handle copied properly.
-    OutputHandle() -> (status status, handle<event> event);
+    OutputHandle() -> (zx.status status, handle<event> event);
 
     // When two output handles, status and copy are verified before any bytes
     // returned.
-    TwoOutputHandle() -> (status status, handle<event> out0, handle<event> out1);
+    TwoOutputHandle() -> (zx.status status, handle<event> out0, handle<event> out1);
 
     [testonly]
-    CompiledOut() -> (status status);
+    CompiledOut() -> (zx.status status);
 };
diff --git a/zircon/tools/kazoo/test_no_methods.test.fidl b/zircon/tools/kazoo/test_no_methods.test.fidl
index c2b896c..d592030 100644
--- a/zircon/tools/kazoo/test_no_methods.test.fidl
+++ b/zircon/tools/kazoo/test_no_methods.test.fidl
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
 
 [Transport="Syscall"]
 protocol Empty {
diff --git a/zircon/tools/kazoo/test_one_protocol_one_method.test.fidl b/zircon/tools/kazoo/test_one_protocol_one_method.test.fidl
index 3bc793a..cc63d98 100644
--- a/zircon/tools/kazoo/test_one_protocol_one_method.test.fidl
+++ b/zircon/tools/kazoo/test_one_protocol_one_method.test.fidl
@@ -2,10 +2,12 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 [Transport="Syscall"]
 protocol Single {
     /// This does a single thing.
-    DoThing(int32 an_input) -> (status status);
+    DoThing(int32 an_input) -> (zx.status status);
 };
diff --git a/zircon/tools/kazoo/test_one_protocol_two_methods.test.fidl b/zircon/tools/kazoo/test_one_protocol_two_methods.test.fidl
index ffad541..bdacf70 100644
--- a/zircon/tools/kazoo/test_one_protocol_two_methods.test.fidl
+++ b/zircon/tools/kazoo/test_one_protocol_two_methods.test.fidl
@@ -2,13 +2,15 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 [Transport="Syscall"]
 protocol Couple {
     /// This does a single thing.
-    DoThing(int32 an_input) -> (status status);
+    DoThing(int32 an_input) -> (zx.status status);
 
     /// Does great stuff.
-    GetStuff(int32 an_input, int32 input2) -> (status status);
+    GetStuff(int32 an_input, int32 input2) -> (zx.status status);
 };
diff --git a/zircon/tools/kazoo/test_one_protocol_two_methods_with_internal.test.fidl b/zircon/tools/kazoo/test_one_protocol_two_methods_with_internal.test.fidl
index 8b0195a..80ea55d 100644
--- a/zircon/tools/kazoo/test_one_protocol_two_methods_with_internal.test.fidl
+++ b/zircon/tools/kazoo/test_one_protocol_two_methods_with_internal.test.fidl
@@ -2,14 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 [Transport="Syscall"]
 protocol Couple {
     /// This does a single thing.
     [internal]
-    DoThing(int32 an_input) -> (status status);
+    DoThing(int32 an_input) -> (zx.status status);
 
     /// Does great stuff.
-    GetStuff(int32 an_input, int32 input2) -> (status status);
+    GetStuff(int32 an_input, int32 input2) -> (zx.status status);
 };
diff --git a/zircon/tools/kazoo/test_out_voidptr.test.fidl b/zircon/tools/kazoo/test_out_voidptr.test.fidl
index 52766c8..43b5b80 100644
--- a/zircon/tools/kazoo/test_out_voidptr.test.fidl
+++ b/zircon/tools/kazoo/test_out_voidptr.test.fidl
@@ -2,11 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 using voidptr = uint64;
 
 [Transport = "Syscall"]
 protocol Ovp {
-    ovp_void_pointer_out(handle handle) -> (status status, voidptr details);
+    ovp_void_pointer_out(handle handle) -> (zx.status status, voidptr details);
 };
diff --git a/zircon/tools/kazoo/test_ownership_annotations.test.fidl b/zircon/tools/kazoo/test_ownership_annotations.test.fidl
index 865e7c2..8028a88 100644
--- a/zircon/tools/kazoo/test_ownership_annotations.test.fidl
+++ b/zircon/tools/kazoo/test_ownership_annotations.test.fidl
@@ -2,7 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 [Transport="Syscall"]
 protocol HandleOwnership {
@@ -10,8 +12,8 @@
     fun1([Release] vector<handle> in);
     fun2([Use] vector<handle> in) -> ([Use] vector<handle> out);
     fun3(vector<handle> in) -> ([Acquire] vector<handle> out);
-    fun4(handle in) -> (status status, handle out);
-    fun5([Release] handle in) -> (status status, [Use] handle out);
+    fun4(handle in) -> (zx.status status, handle out);
+    fun5([Release] handle in) -> (zx.status status, [Use] handle out);
     [HandleUnchecked]
     fun6(vector<handle> in) -> (vector<handle> out);
 };
diff --git a/zircon/tools/kazoo/test_pointers_and_vectors.test.fidl b/zircon/tools/kazoo/test_pointers_and_vectors.test.fidl
index 711ab4a..c80e060 100644
--- a/zircon/tools/kazoo/test_pointers_and_vectors.test.fidl
+++ b/zircon/tools/kazoo/test_pointers_and_vectors.test.fidl
@@ -2,11 +2,13 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 [Transport="Syscall"]
 protocol TypeMappings {
-    Func0(vector<byte> bytes, string str) -> (status status);
-    Func1(vector<handle> ins) -> (status status);
+    Func0(vector<byte> bytes, string str) -> (zx.status status);
+    Func1(vector<handle> ins) -> (zx.status status);
     Func2();
 };
diff --git a/zircon/tools/kazoo/test_rights_specs.test.fidl b/zircon/tools/kazoo/test_rights_specs.test.fidl
index cd1e49e..50fb9e5 100644
--- a/zircon/tools/kazoo/test_rights_specs.test.fidl
+++ b/zircon/tools/kazoo/test_rights_specs.test.fidl
@@ -2,14 +2,16 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 [Transport="Syscall"]
 protocol Rights {
     /// Create an exception channel for a given job, process, or thread.
     /// Rights: handle must have ZX_RIGHT_INSPECT and have ZX_RIGHT_DUPLICATE and have ZX_RIGHT_TRANSFER and have ZX_RIGHT_MANAGE_THREAD.
     /// Rights: If handle is of type ZX_OBJ_TYPE_JOB or ZX_OBJ_TYPE_PROCESS, it must have ZX_RIGHT_ENUMERATE.
-    DoThing(handle handle, uint32 options) -> (status status, handle<channel> out);
+    DoThing(handle handle, uint32 options) -> (zx.status status, handle<channel> out);
 
     /// Rights: handle must have ZX_RIGHT_DESTROY.
     NoShortDesc(handle handle) -> ();
diff --git a/zircon/tools/kazoo/test_rust_selection.test.fidl b/zircon/tools/kazoo/test_rust_selection.test.fidl
index 9399dcb..364858d 100644
--- a/zircon/tools/kazoo/test_rust_selection.test.fidl
+++ b/zircon/tools/kazoo/test_rust_selection.test.fidl
@@ -2,17 +2,23 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 using mutable_vector_void = vector<byte>;
+using ticks = int64;
+using time = int64;
+using uintptr = uint64;
+using usize = uint64;
 using voidptr = uint64;
 
-[Transport = "Syscall"]
+[Transport="Syscall"]
 protocol Rust {
     // Simple out ptr.
     SimpleCase() -> (time time);
 
-    MultipleInHandles(vector<handle> handles) -> (status status);
+    MultipleInHandles(vector<handle> handles) -> (zx.status status);
 
     // noreturn handled properly.
     [noreturn]
@@ -23,14 +29,14 @@
 
     // |buffer| treated mutable.
     InoutArgs(handle<vmo> handle,
-              uint32 op,
-              uint64 offset,
-              uint64 size,
-              mutable_vector_void buffer)
-        -> (status status);
+            uint32 op,
+            uint64 offset,
+            uint64 size,
+            mutable_vector_void buffer) ->
+        (zx.status status);
 
     // |input| treated const
-    ConstInput(vector<byte> input) -> (status status);
+    ConstInput(vector<byte> input) -> (zx.status status);
 
     VariousBasicTypeNames(bool a,
                           byte b,
diff --git a/zircon/tools/kazoo/test_selection.test.fidl b/zircon/tools/kazoo/test_selection.test.fidl
index 8697b6b..177a30a 100644
--- a/zircon/tools/kazoo/test_selection.test.fidl
+++ b/zircon/tools/kazoo/test_selection.test.fidl
@@ -2,7 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 // This file is copies of some syscalls that cover more unusual features (see
 // annotations at the method).
@@ -12,6 +14,9 @@
 using mutable_uint32 = uint32;
 using mutable_vector_void = vector<byte>;
 using optional_signals = signals;
+using signals = uint32;
+using time = int64;
+using usize = uint64;
 using vector_void_u32size = vector<byte>;
 enum Clock : uint32 {
     MONOTONIC = 0;
@@ -29,16 +34,16 @@
                  const_futexptr requeue_ptr,
                  uint32 requeue_count,
                  handle new_requeue_owner) ->
-        (status status);
+        (zx.status status);
 
     // Optional output (signals).
     ObjectWaitOne(handle handle, signals signals, time deadline) ->
-        (status status, optional_signals observed);
+        (zx.status status, optional_signals observed);
 
     // Argument reordering.
     [ArgReorder="handle,data,offset,data_size,actual"]
     KtraceRead(handle<resource> handle, mutable_vector_void data, uint32 offset) ->
-        (status status, usize actual);
+        (zx.status status, usize actual);
 
     // Mutable uint32 in the middle of input parameters (rather than as an
     // output).
@@ -50,12 +55,12 @@
                 mutable_uint32 val,
                 usize width,
                 bool write) ->
-        (status status);
+        (zx.status status);
 
     // uint32_t for size of a "vector".
     JobSetPolicy(handle<job> handle, uint32 options, uint32 topic, vector_void_u32size policy) ->
-        (status status);
+        (zx.status status);
 
     // Handling of enums.
-    ClockGet(Clock clock_id) -> (status status, time out);
+    ClockGet(Clock clock_id) -> (zx.status status, time out);
 };
diff --git a/zircon/tools/kazoo/test_various_categories.test.fidl b/zircon/tools/kazoo/test_various_categories.test.fidl
index 6043f10..60296b0 100644
--- a/zircon/tools/kazoo/test_various_categories.test.fidl
+++ b/zircon/tools/kazoo/test_various_categories.test.fidl
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
 
 [Transport="Syscall"]
 protocol Categories {
diff --git a/zircon/tools/kazoo/test_vdsowrappers.test.fidl b/zircon/tools/kazoo/test_vdsowrappers.test.fidl
index 35d2d201..496ca825 100644
--- a/zircon/tools/kazoo/test_vdsowrappers.test.fidl
+++ b/zircon/tools/kazoo/test_vdsowrappers.test.fidl
@@ -2,7 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+library zz;
+
+using zx;
 
 using vector_void = vector<byte>;
 
@@ -12,8 +14,8 @@
 protocol Syscall {
     // Typical case.
     [blocking]
-    BlockingWrite(handle<vmo> handle, vector_void buffer, uint64 offset) -> (status status);
+    BlockingWrite(handle<vmo> handle, vector_void buffer, uint64 offset) -> (zx.status status);
 
     // Special case for abigen's test wrapper.
-    TestWrapper(int32 a, int32 b, int32 c) -> (status status);
+    TestWrapper(int32 a, int32 b, int32 c) -> (zx.status status);
 };
diff --git a/zircon/vdso/BUILD.gn b/zircon/vdso/BUILD.gn
index 652ba00..5cc6006 100644
--- a/zircon/vdso/BUILD.gn
+++ b/zircon/vdso/BUILD.gn
@@ -2,16 +2,16 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("$zx/public/gn/fidl.gni")
 import("$zx/public/gn/toolchain/c_utils.gni")
-import("$zx_build/public/gn/fidl.gni")
 import("vdso.gni")
 
 group("vdso") {
-  public_deps = [ ":zx" ]
+  public_deps = [ ":zz" ]
 }
 
 group("json") {
-  public_deps = [ ":zx.json" ]
+  public_deps = [ ":zz.json" ]
 }
 
 # The system calls are defined as if they were a FIDL library, because
@@ -19,8 +19,8 @@
 # like a normal fidl_library, however.  Only the "json" subtarget is
 # available.
 #
-# TODO(fxbug.dev/7802): Merge with vdso/zx:zx.
-fidl_library("zx") {
+# TODO(39732): Rename to "zx".
+fidl_library("zz") {
   visibility = [ ":*" ]
   targets = [ "fidl_json_rspfile" ]
   sources = [
@@ -68,8 +68,7 @@
     "vcpu.fidl",
     "vmar.fidl",
     "vmo.fidl",
-    "zx_common.fidl",
-    "zx_syscall.fidl",
+    "zx.fidl",
   ]
 }
 
diff --git a/zircon/vdso/alias_workarounds.fidl b/zircon/vdso/alias_workarounds.fidl
index a4c821c0..bdcfc5f 100644
--- a/zircon/vdso/alias_workarounds.fidl
+++ b/zircon/vdso/alias_workarounds.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 // These are all aliases that will be subsumed by the future implementation of
 // templating, constraints, etc. in fidlc.
diff --git a/zircon/vdso/bti.fidl b/zircon/vdso/bti.fidl
index f087e2a..8ec1c08 100644
--- a/zircon/vdso/bti.fidl
+++ b/zircon/vdso/bti.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol bti {
diff --git a/zircon/vdso/cache.fidl b/zircon/vdso/cache.fidl
index 71a685e..f1f8567 100644
--- a/zircon/vdso/cache.fidl
+++ b/zircon/vdso/cache.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol cache {
diff --git a/zircon/vdso/channel.fidl b/zircon/vdso/channel.fidl
index 3432636..25c8ca3 100644
--- a/zircon/vdso/channel.fidl
+++ b/zircon/vdso/channel.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 using ObjType = uint32;
 
@@ -44,7 +45,7 @@
     /// Read a message from a channel.
     /// Rights: handle must be of type ZX_OBJ_TYPE_CHANNEL and have ZX_RIGHT_READ.
     [ArgReorder = "handle, options, bytes, handles, num_bytes, num_handles, actual_bytes, actual_handles",
-    HandleUnchecked]
+     HandleUnchecked]
     channel_read(handle<channel> handle,
                  uint32 options)
         -> (status status,
diff --git a/zircon/vdso/clock.fidl b/zircon/vdso/clock.fidl
index 0094798..5aecb3b 100644
--- a/zircon/vdso/clock.fidl
+++ b/zircon/vdso/clock.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 enum Clock : uint32 {
     MONOTONIC = 0;
diff --git a/zircon/vdso/cprng.fidl b/zircon/vdso/cprng.fidl
index a7fb89c..7431bde 100644
--- a/zircon/vdso/cprng.fidl
+++ b/zircon/vdso/cprng.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol cprng {
diff --git a/zircon/vdso/debug.fidl b/zircon/vdso/debug.fidl
index 000c461..e629799 100644
--- a/zircon/vdso/debug.fidl
+++ b/zircon/vdso/debug.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol debug {
diff --git a/zircon/vdso/debuglog.fidl b/zircon/vdso/debuglog.fidl
index f59efc8..23e1faf 100644
--- a/zircon/vdso/debuglog.fidl
+++ b/zircon/vdso/debuglog.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol debuglog {
diff --git a/zircon/vdso/event.fidl b/zircon/vdso/event.fidl
index b123aa8..4f12cd8 100644
--- a/zircon/vdso/event.fidl
+++ b/zircon/vdso/event.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol event {
diff --git a/zircon/vdso/eventpair.fidl b/zircon/vdso/eventpair.fidl
index 4861f5e..a7a3e38 100644
--- a/zircon/vdso/eventpair.fidl
+++ b/zircon/vdso/eventpair.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol eventpair {
diff --git a/zircon/vdso/exception.fidl b/zircon/vdso/exception.fidl
index fb36bbb..db3e45a 100644
--- a/zircon/vdso/exception.fidl
+++ b/zircon/vdso/exception.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol exception {
diff --git a/zircon/vdso/fifo.fidl b/zircon/vdso/fifo.fidl
index d2969b7..0e9ee21 100644
--- a/zircon/vdso/fifo.fidl
+++ b/zircon/vdso/fifo.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol fifo {
diff --git a/zircon/vdso/framebuffer.fidl b/zircon/vdso/framebuffer.fidl
index 5f3ff5e..2ab69c7 100644
--- a/zircon/vdso/framebuffer.fidl
+++ b/zircon/vdso/framebuffer.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol framebuffer {
diff --git a/zircon/vdso/futex.fidl b/zircon/vdso/futex.fidl
index e60d4bf..69ab6dc 100644
--- a/zircon/vdso/futex.fidl
+++ b/zircon/vdso/futex.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 // TODO(scottmg): This is approximately right, but will need to match the
 // current definition of zx_futex_t (atomic_int in some #if branches).
diff --git a/zircon/vdso/guest.fidl b/zircon/vdso/guest.fidl
index 0cbb1b3..a75093e 100644
--- a/zircon/vdso/guest.fidl
+++ b/zircon/vdso/guest.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol guest {
diff --git a/zircon/vdso/handle.fidl b/zircon/vdso/handle.fidl
index abea3a7..b29842b 100644
--- a/zircon/vdso/handle.fidl
+++ b/zircon/vdso/handle.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol handle {
diff --git a/zircon/vdso/interrupt.fidl b/zircon/vdso/interrupt.fidl
index 8c0d18f..506df65 100644
--- a/zircon/vdso/interrupt.fidl
+++ b/zircon/vdso/interrupt.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol interrupt {
diff --git a/zircon/vdso/iommu.fidl b/zircon/vdso/iommu.fidl
index a155de2..84ac2a9 100644
--- a/zircon/vdso/iommu.fidl
+++ b/zircon/vdso/iommu.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol iommu {
diff --git a/zircon/vdso/ioports.fidl b/zircon/vdso/ioports.fidl
index 71782a6..72353d3 100644
--- a/zircon/vdso/ioports.fidl
+++ b/zircon/vdso/ioports.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol ioports {
diff --git a/zircon/vdso/job.fidl b/zircon/vdso/job.fidl
index 969b27e..edbdd2c 100644
--- a/zircon/vdso/job.fidl
+++ b/zircon/vdso/job.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol job {
diff --git a/zircon/vdso/ktrace.fidl b/zircon/vdso/ktrace.fidl
index 68c1710..d3234e65 100644
--- a/zircon/vdso/ktrace.fidl
+++ b/zircon/vdso/ktrace.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol ktrace {
diff --git a/zircon/vdso/misc.fidl b/zircon/vdso/misc.fidl
index 959b0cd..6c0e4c4 100644
--- a/zircon/vdso/misc.fidl
+++ b/zircon/vdso/misc.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 // TODO(scottmg): These syscalls don't match the general naming convention of
 // zx_something_name(), they're just zx_name(), so NoProtocolPrefix tells the
@@ -21,7 +22,7 @@
 
     /// Read the number of high-precision timer ticks in a second.
     [const,
-    vdsocall]
+     vdsocall]
     ticks_per_second() -> (ticks ticks);
 
     /// Convert a time relative to now to an absolute deadline.
diff --git a/zircon/vdso/mtrace.fidl b/zircon/vdso/mtrace.fidl
index 896737e..f3c1f1c 100644
--- a/zircon/vdso/mtrace.fidl
+++ b/zircon/vdso/mtrace.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol mtrace {
diff --git a/zircon/vdso/object.fidl b/zircon/vdso/object.fidl
index a5d9c9f..f510fec 100644
--- a/zircon/vdso/object.fidl
+++ b/zircon/vdso/object.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 // TODO(scottmg): Apply rights spec from WaitMany on |items| to |handle| here,
 // somehow.
diff --git a/zircon/vdso/pager.fidl b/zircon/vdso/pager.fidl
index e397e8d..6c7c581 100644
--- a/zircon/vdso/pager.fidl
+++ b/zircon/vdso/pager.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol pager {
diff --git a/zircon/vdso/pc.fidl b/zircon/vdso/pc.fidl
index 974940f..cb10baa 100644
--- a/zircon/vdso/pc.fidl
+++ b/zircon/vdso/pc.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol pc {
diff --git a/zircon/vdso/pci.fidl b/zircon/vdso/pci.fidl
index 9598424..d5c80db 100644
--- a/zircon/vdso/pci.fidl
+++ b/zircon/vdso/pci.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 // TODO(cja): This makes some assumptions that anything in an arch's PIO region
 // is going to be defined as a base address and size. This will need to be
diff --git a/zircon/vdso/pmt.fidl b/zircon/vdso/pmt.fidl
index b289f9b..0e37311 100644
--- a/zircon/vdso/pmt.fidl
+++ b/zircon/vdso/pmt.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol pmt {
diff --git a/zircon/vdso/port.fidl b/zircon/vdso/port.fidl
index 7f952ac..21fed70 100644
--- a/zircon/vdso/port.fidl
+++ b/zircon/vdso/port.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 // port_packet_t::type ZX_PKT_TYPE_USER.
 union PacketUser {
diff --git a/zircon/vdso/process.fidl b/zircon/vdso/process.fidl
index 98dc3c1..b9c3eb3 100644
--- a/zircon/vdso/process.fidl
+++ b/zircon/vdso/process.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol process {
diff --git a/zircon/vdso/profile.fidl b/zircon/vdso/profile.fidl
index 55c68d4..c808f4d 100644
--- a/zircon/vdso/profile.fidl
+++ b/zircon/vdso/profile.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 enum ProfileInfoType {
     ZX_PROFILE_INFO_SCHEDULER = 1;
diff --git a/zircon/vdso/resource.fidl b/zircon/vdso/resource.fidl
index eecf0a1..1854504 100644
--- a/zircon/vdso/resource.fidl
+++ b/zircon/vdso/resource.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol resource {
diff --git a/zircon/vdso/rights.fidl b/zircon/vdso/rights.fidl
index 290815e..69ba88f 100644
--- a/zircon/vdso/rights.fidl
+++ b/zircon/vdso/rights.fidl
@@ -2,33 +2,34 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 // TODO(scottmg): (1 << 4) notation or something else for bits would be nice.
 bits rights : uint32 {
     // TODO(scottmg): "bits members must be powers of two"
     // NONE =           0x00000000;
-    DUPLICATE = 0x00000001;
-    TRANSFER = 0x00000002;
-    READ = 0x00000004;
-    WRITE = 0x00000008;
-    EXECUTE = 0x00000010;
-    MAP = 0x00000020;
-    GET_PROPERTY = 0x00000040;
-    SET_PROPERTY = 0x00000080;
-    ENUMERATE = 0x00000100;
-    DESTROY = 0x00000200;
-    SET_POLICY = 0x00000400;
-    GET_POLICY = 0x00000800;
-    SIGNAL = 0x00001000;
-    SIGNAL_PEER = 0x00002000;
-    WAIT = 0x00004000;
-    INSPECT = 0x00008000;
-    MANAGE_JOB = 0x00010000;
+    DUPLICATE =      0x00000001;
+    TRANSFER =       0x00000002;
+    READ =           0x00000004;
+    WRITE =          0x00000008;
+    EXECUTE =        0x00000010;
+    MAP =            0x00000020;
+    GET_PROPERTY =   0x00000040;
+    SET_PROPERTY =   0x00000080;
+    ENUMERATE =      0x00000100;
+    DESTROY =        0x00000200;
+    SET_POLICY =     0x00000400;
+    GET_POLICY =     0x00000800;
+    SIGNAL =         0x00001000;
+    SIGNAL_PEER =    0x00002000;
+    WAIT =           0x00004000;
+    INSPECT =        0x00008000;
+    MANAGE_JOB =     0x00010000;
     MANAGE_PROCESS = 0x00020000;
-    MANAGE_THREAD = 0x00040000;
-    APPLY_PROFILE = 0x00080000;
-    SAME_RIGHTS = 0x80000000;
+    MANAGE_THREAD =  0x00040000;
+    APPLY_PROFILE =  0x00080000;
+    SAME_RIGHTS =    0x80000000;
 
     // TODO(scottmg): Derived settings using |, &, ~, e.g.:
     // BASIC = (TRANSFER | DUPLICATE | WAIT | INSPECT);
diff --git a/zircon/vdso/smc.fidl b/zircon/vdso/smc.fidl
index 3b9e4bb..b039311 100644
--- a/zircon/vdso/smc.fidl
+++ b/zircon/vdso/smc.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 // TODO(scottmg): ARM_SMC_xyz.
 
diff --git a/zircon/vdso/socket.fidl b/zircon/vdso/socket.fidl
index 3054629..00f7159 100644
--- a/zircon/vdso/socket.fidl
+++ b/zircon/vdso/socket.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol socket {
diff --git a/zircon/vdso/stream.fidl b/zircon/vdso/stream.fidl
index 14b2dbe..cf6cdbd 100644
--- a/zircon/vdso/stream.fidl
+++ b/zircon/vdso/stream.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 enum stream_seek_origin : uint32 {
     START = 0;
diff --git a/zircon/vdso/syscall.fidl b/zircon/vdso/syscall.fidl
index 4a786e3..06e5683 100644
--- a/zircon/vdso/syscall.fidl
+++ b/zircon/vdso/syscall.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol syscall {
diff --git a/zircon/vdso/system.fidl b/zircon/vdso/system.fidl
index 4386262..12ada66 100644
--- a/zircon/vdso/system.fidl
+++ b/zircon/vdso/system.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 struct SystemPowerctlArg {
     // TODO(scottmg): More unnamed unions.
diff --git a/zircon/vdso/task.fidl b/zircon/vdso/task.fidl
index 15d113f86..56cc556 100644
--- a/zircon/vdso/task.fidl
+++ b/zircon/vdso/task.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol task {
diff --git a/zircon/vdso/thread.fidl b/zircon/vdso/thread.fidl
index f9f976a..9754d05 100644
--- a/zircon/vdso/thread.fidl
+++ b/zircon/vdso/thread.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol thread {
diff --git a/zircon/vdso/timer.fidl b/zircon/vdso/timer.fidl
index 98e597f..1eae5a9 100644
--- a/zircon/vdso/timer.fidl
+++ b/zircon/vdso/timer.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol timer {
diff --git a/zircon/vdso/vcpu.fidl b/zircon/vdso/vcpu.fidl
index 0a067a7c..72cc954 100644
--- a/zircon/vdso/vcpu.fidl
+++ b/zircon/vdso/vcpu.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol vcpu {
diff --git a/zircon/vdso/vmar.fidl b/zircon/vdso/vmar.fidl
index 483f805..0256623 100644
--- a/zircon/vdso/vmar.fidl
+++ b/zircon/vdso/vmar.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 using VmOption = uint32;
 
diff --git a/zircon/vdso/vmo.fidl b/zircon/vdso/vmo.fidl
index f58174c..060d4cd 100644
--- a/zircon/vdso/vmo.fidl
+++ b/zircon/vdso/vmo.fidl
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-library zx;
+// TODO(fxb/39732): This should be read as "library zx".
+library zz;
 
 [Transport = "Syscall"]
 protocol vmo {
diff --git a/zircon/vdso/zx.fidl b/zircon/vdso/zx.fidl
new file mode 100644
index 0000000..ac9903a
--- /dev/null
+++ b/zircon/vdso/zx.fidl
@@ -0,0 +1,41 @@
+// Copyright 2019 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// TODO(scottmg): This library is temporarily "zz" instead of "zx" because a
+// "zx" is force-injected by fidlc. Eventually, we'll stop that and use this one
+// instead as "zx". fxb/39732.
+library zz;
+
+using status = int32;
+
+using time = int64;
+using duration = int64;
+using ticks = uint64;
+
+using koid = uint64;
+
+using vaddr = uint64;
+using paddr = uint64;
+using paddr32 = uint32;
+using gpaddr = uint64;
+using off = uint64;
+
+// TODO(scottmg): Not sure what this is.
+using procarg = uint32;
+
+const uint64 CHANNEL_MAX_MSG_BYTES = 65536;
+const uint64 CHANNEL_MAX_MSG_HANDLES = 64;
+
+// TODO(scottmg): == size_t, not sure if this is a good idea.
+using usize = uint64;
+
+// TODO(scottmg): == uintptr_t, not sure if this is a good idea.
+using uintptr = uint64;
+
+// TODO(scottmg): Maybe a void for vector<void> (or vector<any>?) to distinguish
+// polymorphic arguments that are passed as void* from buffers of bytes.
+
+using signals = uint32;
+// TODO(scottmg): Lots of aliases/variations required here. Not sure if bits
+// make sense.
diff --git a/zircon/vdso/zx/BUILD.gn b/zircon/vdso/zx/BUILD.gn
deleted file mode 100644
index 4e88e5de..0000000
--- a/zircon/vdso/zx/BUILD.gn
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright 2020 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import("$zx_build/public/gn/fidl.gni")
-
-fidl_library("zx") {
-  sources = [ "../zx_common.fidl" ]
-
-  sdk = true
-}
diff --git a/zircon/vdso/zx_common.fidl b/zircon/vdso/zx_common.fidl
deleted file mode 100644
index f1de182..0000000
--- a/zircon/vdso/zx_common.fidl
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2020 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-// This specific FIDL file is used in two contexts:
-//
-// 1. Define the `zx` library for plain-vanilla FIDL files, i.e. channel
-//    transport
-// 2. Part of the overall definition of the Kernel ABI, i.e. Syscall transport
-//
-// Since the FIDL compiler does not support splitting definitions per-transport
-// yet, we split definitions by file.
-//
-// Additionally, this file is defined as `Internal` which omits any code from
-// being generated by bindings. As a result, no declaration (e.g. an enum or
-// bits) may be present in this file.
-[Internal]
-library zx;
-
-// zx_status_t and errors.h.
-using status = int32;
-
-// zx_time_t: absolute time in nanoseconds (generally with respect to the
-// monotonic clock).
-using time = int64;
-
-// zx_duration_t: a duration in nanoseconds.
-using duration = int64;
-
-// zx_ticks_t: a duration in hardware ticks.
-using ticks = uint64;
-
-// zx_koid_t: global kernel object id.
-using koid = uint64;
-
-// zx_vaddr_t: virtual address.
-using vaddr = uint64;
-
-// zx_paddr_t: physical address.
-using paddr = uint64;
-
-// zx_paddr32_t: low mem physical address.
-using paddr32 = uint32;
-
-// zx_gpaddr_t: hypervisor guest physical addresses.
-using gpaddr = uint64;
-
-// zx_off_t: offset.
-using off = uint64;
-
-// See zircon/processargs.h.
-using procarg = uint32;
-
-// zx_signals_t.
-using signals = uint32;
-
-// TODO(fxbug.dev/7802): These are currently duplicated with zircon/types.h.
-// Eventually the definitions in zircon/types.h will be generated from this
-// source.
-const uint64 CHANNEL_MAX_MSG_BYTES = 65536;
-const uint64 CHANNEL_MAX_MSG_HANDLES = 64;
-const uint64 MAX_NAME_LEN = 32;
-const uint64 MAX_CPUS = 512;
diff --git a/zircon/vdso/zx_syscall.fidl b/zircon/vdso/zx_syscall.fidl
deleted file mode 100644
index b8f28c0..0000000
--- a/zircon/vdso/zx_syscall.fidl
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2020 The Fuchsia Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-library zx;
-
-using usize = uint64;
-
-using uintptr = uint64;
