diff --git a/.gitignore b/.gitignore
index f538f37..8713a1e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,7 +10,6 @@
 # Executables when compiling in-tree.
 /libminijail_unittest
 /minijail0
-/minijail0_cli_unittest
 /syscall_filter_unittest
 /system_unittest
 /util_unittest
diff --git a/Android.bp b/Android.bp
index c7efae5..6fb7476 100644
--- a/Android.bp
+++ b/Android.bp
@@ -210,13 +210,13 @@
 // System functionality unit tests using gtest.
 //
 // For a device, run with:
-// adb shell /data/nativetest/mj_system_unittest_gtest/mj_system_unittest_gtest
+// adb shell /data/nativetest/system_unittest_gtest/system_unittest_gtest
 //
 // For host, run with:
-// out/host/linux-x86/nativetest(64)/mj_system_unittest_gtest/mj_system_unittest_gtest
+// out/host/linux-x86/nativetest(64)/system_unittest_gtest/system_unittest_gtest
 // =========================================================
 cc_test {
-    name: "mj_system_unittest_gtest",
+    name: "system_unittest_gtest",
     defaults: ["libminijail_flags"],
     host_supported: true,
 
@@ -239,13 +239,13 @@
 // Utility functionality unit tests using gtest.
 //
 // For a device, run with:
-// adb shell /data/nativetest/mj_util_unittest_gtest/mj_util_unittest_gtest
+// adb shell /data/nativetest/util_unittest_gtest/util_unittest_gtest
 //
 // For host, run with:
-// out/host/linux-x86/nativetest(64)/mj_util_unittest_gtest/mj_util_unittest_gtest
+// out/host/linux-x86/nativetest(64)/util_unittest_gtest/util_unittest_gtest
 // =========================================================
 cc_test {
-    name: "mj_util_unittest_gtest",
+    name: "util_unittest_gtest",
     defaults: ["libminijail_flags"],
     host_supported: true,
 
@@ -264,38 +264,6 @@
     },
 }
 
-// Utility functionality unit tests using gtest.
-//
-// For a device, run with:
-// adb shell /data/nativetest/minijail0_cli_unittest_gtest/minijail0_cli_unittest_gtest
-//
-// For host, run with:
-// out/host/linux-x86/nativetest(64)/minijail0_cli_unittest_gtest/minijail0_cli_unittest_gtest
-// =========================================================
-cc_test {
-    name: "minijail0_cli_unittest_gtest",
-    defaults: ["libminijail_flags"],
-    host_supported: true,
-
-    cflags: [
-        "-DPRELOADPATH=\"/invalid\"",
-    ],
-    srcs: libminijailSrcFiles + [
-        "elfparse.c",
-        "minijail0_cli.c",
-        "minijail0_cli_unittest.cc",
-    ] + unittestSrcFiles,
-
-    static_libs: ["libminijail_generated"],
-    shared_libs: minijailCommonLibraries,
-
-    target: {
-        android: {
-            test_suites: ["device-tests"],
-        },
-    },
-}
-
 // libminijail_test executable for brillo_Minijail test.
 // =========================================================
 cc_test {
@@ -338,6 +306,7 @@
     defaults: ["libminijail_flags"],
 
     cflags: [
+        "-Wno-missing-field-initializers",
         "-DPRELOADPATH=\"/invalidminijailpreload.so\"",
     ],
     srcs: [
diff --git a/Makefile b/Makefile
index bcf2217..cc57224 100644
--- a/Makefile
+++ b/Makefile
@@ -54,7 +54,6 @@
 parse_seccomp_policy: CXX_BINARY(parse_seccomp_policy)
 
 tests: TEST(CXX_BINARY(libminijail_unittest)) \
-	TEST(CXX_BINARY(minijail0_cli_unittest)) \
 	TEST(CXX_BINARY(syscall_filter_unittest)) \
 	TEST(CXX_BINARY(system_unittest)) \
 	TEST(CXX_BINARY(util_unittest)) \
@@ -87,16 +86,6 @@
 clean: CLEAN(libminijailpreload.so)
 
 
-CXX_BINARY(minijail0_cli_unittest): CXXFLAGS += $(GTEST_CXXFLAGS)
-CXX_BINARY(minijail0_cli_unittest): LDLIBS += -lcap $(GTEST_LIBS)
-ifeq ($(USE_SYSTEM_GTEST),no)
-CXX_BINARY(minijail0_cli_unittest): $(GTEST_LIBS)
-endif
-CXX_BINARY(minijail0_cli_unittest): minijail0_cli_unittest.o \
-		$(CORE_OBJECT_FILES) minijail0_cli.o elfparse.o testrunner.o
-clean: CLEAN(minijail0_cli_unittest)
-
-
 CXX_BINARY(syscall_filter_unittest): CXXFLAGS += -Wno-write-strings \
 						$(GTEST_CXXFLAGS)
 CXX_BINARY(syscall_filter_unittest): LDLIBS += -lcap $(GTEST_LIBS)
diff --git a/minijail0_cli.c b/minijail0_cli.c
index dc83c8b..0d605ce 100644
--- a/minijail0_cli.c
+++ b/minijail0_cli.c
@@ -272,8 +272,6 @@
 static void use_profile(struct minijail *j, const char *profile,
 			int *pivot_root, int chroot, size_t *tmp_size)
 {
-	/* Note: New profiles should be added in minijail0_cli_unittest.cc. */
-
 	if (!strcmp(profile, "minimalistic-mountns")) {
 		minijail_namespace_vfs(j);
 		if (minijail_bind(j, "/", "/", 0)) {
diff --git a/minijail0_cli_unittest.cc b/minijail0_cli_unittest.cc
deleted file mode 100644
index 856243a..0000000
--- a/minijail0_cli_unittest.cc
+++ /dev/null
@@ -1,401 +0,0 @@
-/* Copyright 2018 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Test the minijail0 CLI using gtest.
- *
- * Note: We don't verify that the minijail struct was set correctly from these
- * flags as only libminijail.c knows that definition.  If we wanted to improve
- * this test, we'd have to pull that struct into a common (internal) header.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <gtest/gtest.h>
-
-#include "libminijail.h"
-#include "minijail0_cli.h"
-
-namespace {
-
-constexpr char kValidUser[] = "nobody";
-constexpr char kValidUid[] = "100";
-constexpr char kValidGroup[] = "users";
-constexpr char kValidGid[] = "100";
-
-class CliTest : public ::testing::Test {
- protected:
-  virtual void SetUp() {
-    j_ = minijail_new();
-
-    // Most tests do not care about this logic.  For the few that do, make
-    // them opt into it so they can validate specifically.
-    elftype_ = ELFDYNAMIC;
-  }
-  virtual void TearDown() {
-    minijail_destroy(j_);
-  }
-
-  // We use a vector of strings rather than const char * pointers because we
-  // need the backing memory to be writable.  The CLI might mutate the strings
-  // as it parses things (which is normally permissible with argv).
-  int parse_args_(const std::vector<std::string>& argv, int *exit_immediately,
-                  ElfType *elftype) {
-    // Make sure we reset the getopts state when scanning a new argv.
-    optind = 1;
-
-    std::vector<const char *> pargv;
-    pargv.push_back("minijail0");
-    for (const std::string& arg : argv)
-      pargv.push_back(arg.c_str());
-
-    // We grab stdout from parse_args itself as it might dump things we don't
-    // usually care about like help output.
-    testing::internal::CaptureStdout();
-    int ret = parse_args(j_, pargv.size(),
-                         const_cast<char* const*>(pargv.data()),
-                         exit_immediately, elftype);
-    testing::internal::GetCapturedStdout();
-
-    return ret;
-  }
-
-  int parse_args_(const std::vector<std::string>& argv) {
-    return parse_args_(argv, &exit_immediately_, &elftype_);
-  }
-
-  struct minijail *j_;
-  ElfType elftype_;
-  int exit_immediately_;
-};
-
-}  // namespace
-
-// Should exit non-zero when there's no arguments.
-TEST_F(CliTest, no_args) {
-  std::vector<std::string> argv = {};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-}
-
-// Should exit zero when we asked for help.
-TEST_F(CliTest, help) {
-  std::vector<std::string> argv = {"-h"};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(0), "");
-
-  argv = {"--help"};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(0), "");
-
-  argv = {"-H"};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(0), "");
-}
-
-// Just a simple program to run.
-TEST_F(CliTest, valid_program) {
-  std::vector<std::string> argv = {"/bin/sh"};
-  ASSERT_TRUE(parse_args_(argv));
-}
-
-// Valid calls to the change user option.
-TEST_F(CliTest, valid_set_user) {
-  std::vector<std::string> argv = {"-u", "", "/bin/sh"};
-
-  argv[1] = kValidUser;
-  ASSERT_TRUE(parse_args_(argv));
-
-  argv[1] = kValidUid;
-  ASSERT_TRUE(parse_args_(argv));
-}
-
-// Invalid calls to the change user option.
-TEST_F(CliTest, invalid_set_user) {
-  std::vector<std::string> argv = {"-u", "", "/bin/sh"};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  argv[1] = "j;lX:J*Pj;oijfs;jdlkjC;j";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  argv[1] = "1000x";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-}
-
-// Valid calls to the change group option.
-TEST_F(CliTest, valid_set_group) {
-  std::vector<std::string> argv = {"-g", "", "/bin/sh"};
-
-  argv[1] = kValidGroup;
-  ASSERT_TRUE(parse_args_(argv));
-
-  argv[1] = kValidGid;
-  ASSERT_TRUE(parse_args_(argv));
-}
-
-// Invalid calls to the change group option.
-TEST_F(CliTest, invalid_set_group) {
-  std::vector<std::string> argv = {"-g", "", "/bin/sh"};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  argv[1] = "j;lX:J*Pj;oijfs;jdlkjC;j";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  argv[1] = "1000x";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-}
-
-// Valid calls to the skip securebits option.
-TEST_F(CliTest, valid_skip_securebits) {
-  // An empty string is the same as 0.
-  std::vector<std::string> argv = {"-B", "", "/bin/sh"};
-  ASSERT_TRUE(parse_args_(argv));
-
-  argv[1] = "0xAB";
-  ASSERT_TRUE(parse_args_(argv));
-
-  argv[1] = "1234";
-  ASSERT_TRUE(parse_args_(argv));
-}
-
-// Invalid calls to the skip securebits option.
-TEST_F(CliTest, invalid_skip_securebits) {
-  std::vector<std::string> argv = {"-B", "", "/bin/sh"};
-
-  argv[1] = "xja";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-}
-
-// Valid calls to the caps option.
-TEST_F(CliTest, valid_caps) {
-  // An empty string is the same as 0.
-  std::vector<std::string> argv = {"-c", "", "/bin/sh"};
-  ASSERT_TRUE(parse_args_(argv));
-
-  argv[1] = "0xAB";
-  ASSERT_TRUE(parse_args_(argv));
-
-  argv[1] = "1234";
-  ASSERT_TRUE(parse_args_(argv));
-}
-
-// Invalid calls to the caps option.
-TEST_F(CliTest, invalid_caps) {
-  std::vector<std::string> argv = {"-c", "", "/bin/sh"};
-
-  argv[1] = "xja";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-}
-
-// Valid calls to the logging option.
-TEST_F(CliTest, valid_logging) {
-  std::vector<std::string> argv = {"--logging", "", "/bin/sh"};
-
-  // This should list all valid logging targets.
-  const std::vector<std::string> profiles = {
-    "stderr",
-    "syslog",
-  };
-
-  for (const auto profile : profiles) {
-    argv[1] = profile;
-    ASSERT_TRUE(parse_args_(argv));
-  }
-}
-
-// Invalid calls to the logging option.
-TEST_F(CliTest, invalid_logging) {
-  std::vector<std::string> argv = {"--logging", "", "/bin/sh"};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  argv[1] = "stdout";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-}
-
-// Valid calls to the rlimit option.
-TEST_F(CliTest, valid_rlimit) {
-  std::vector<std::string> argv = {"-R", "", "/bin/sh"};
-
-  argv[1] = "0,1,2";
-  ASSERT_TRUE(parse_args_(argv));
-}
-
-// Invalid calls to the rlimit option.
-TEST_F(CliTest, invalid_rlimit) {
-  std::vector<std::string> argv = {"-R", "", "/bin/sh"};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  // Missing cur & max.
-  argv[1] = "0";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  // Missing max.
-  argv[1] = "0,0";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  // Too many options.
-  argv[1] = "0,0,0,0";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  // TODO: We probably should reject non-numbers, but the current CLI ignores
-  // them and converts them to zeros.  Oops.
-}
-
-// Valid calls to the profile option.
-TEST_F(CliTest, valid_profile) {
-  std::vector<std::string> argv = {"--profile", "", "/bin/sh"};
-
-  // This should list all valid profiles.
-  const std::vector<std::string> profiles = {
-    "minimalistic-mountns",
-  };
-
-  for (const auto profile : profiles) {
-    argv[1] = profile;
-    ASSERT_TRUE(parse_args_(argv));
-  }
-}
-
-// Invalid calls to the profile option.
-TEST_F(CliTest, invalid_profile) {
-  std::vector<std::string> argv = {"--profile", "", "/bin/sh"};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  argv[1] = "random-unknown-profile";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-}
-
-// Valid calls to the chroot option.
-TEST_F(CliTest, valid_chroot) {
-  std::vector<std::string> argv = {"-C", "/", "/bin/sh"};
-  ASSERT_TRUE(parse_args_(argv));
-}
-
-// Valid calls to the pivot root option.
-TEST_F(CliTest, valid_pivot_root) {
-  std::vector<std::string> argv = {"-P", "/", "/bin/sh"};
-  ASSERT_TRUE(parse_args_(argv));
-}
-
-// We cannot handle multiple options with chroot/profile/pivot root.
-TEST_F(CliTest, conflicting_roots) {
-  std::vector<std::string> argv;
-
-  // Chroot & pivot root.
-  argv = {"-C", "/", "-P", "/", "/bin/sh"};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  // Chroot & minimalistic-mountns profile.
-  argv = {"-C", "/", "--profile", "minimalistic-mountns", "/bin/sh"};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  // Pivot root & minimalistic-mountns profile.
-  argv = {"-P", "/", "--profile", "minimalistic-mountns", "/bin/sh"};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-}
-
-// Valid calls to the uidmap option.
-TEST_F(CliTest, valid_uidmap) {
-  std::vector<std::string> argv = {"-m", "/bin/sh"};
-  // Use a default map (no option from user).
-  ASSERT_TRUE(parse_args_(argv));
-
-  // Use a single map.
-  argv = {"-m0 0 1", "/bin/sh"};
-  ASSERT_TRUE(parse_args_(argv));
-
-  // Multiple maps.
-  argv = {"-m0 0 1,100 100 1", "/bin/sh"};
-  ASSERT_TRUE(parse_args_(argv));
-}
-
-// Valid calls to the gidmap option.
-TEST_F(CliTest, valid_gidmap) {
-  std::vector<std::string> argv = {"-M", "/bin/sh"};
-  // Use a default map (no option from user).
-  ASSERT_TRUE(parse_args_(argv));
-
-  // Use a single map.
-  argv = {"-M0 0 1", "/bin/sh"};
-  ASSERT_TRUE(parse_args_(argv));
-
-  // Multiple maps.
-  argv = {"-M0 0 1,100 100 1", "/bin/sh"};
-  ASSERT_TRUE(parse_args_(argv));
-}
-
-// Invalid calls to the uidmap/gidmap options.
-// Note: Can't really test these as all validation is delayed/left to the
-// runtime kernel.  Minijail will simply write verbatim what the user gave
-// it to the corresponding /proc/.../[ug]id_map.
-
-// Valid calls to the binding option.
-TEST_F(CliTest, valid_binding) {
-  std::vector<std::string> argv = {"-v", "-b", "", "/bin/sh"};
-
-  // Dest & writable are optional.
-  argv[1] = "/";
-  ASSERT_TRUE(parse_args_(argv));
-
-  // Writable is optional.
-  argv[1] = "/,/";
-  ASSERT_TRUE(parse_args_(argv));
-
-  // Writable is an integer.
-  argv[1] = "/,/,0";
-  ASSERT_TRUE(parse_args_(argv));
-  argv[1] = "/,/,1";
-  ASSERT_TRUE(parse_args_(argv));
-
-  // Dest is optional.
-  argv[1] = "/,,0";
-  ASSERT_TRUE(parse_args_(argv));
-}
-
-// Invalid calls to the binding option.
-TEST_F(CliTest, invalid_binding) {
-  std::vector<std::string> argv = {"-v", "-b", "", "/bin/sh"};
-
-  // Missing source.
-  argv[2] = "";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  // Too many args.
-  argv[2] = "/,/,0,what";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  // Missing mount namespace/etc...
-  argv = {"-b", "/", "/bin/sh"};
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-}
-
-// Valid calls to the mount option.
-TEST_F(CliTest, valid_mount) {
-  std::vector<std::string> argv = {"-v", "-k", "", "/bin/sh"};
-
-  // Flags & data are optional.
-  argv[2] = "none,/,none";
-  ASSERT_TRUE(parse_args_(argv));
-
-  // Data is optional.
-  argv[2] = "none,/,none,0xe";
-  ASSERT_TRUE(parse_args_(argv));
-
-  // Flags are optional.
-  argv[2] = "none,/,none,,mode=755";
-  ASSERT_TRUE(parse_args_(argv));
-}
-
-// Invalid calls to the mount option.
-TEST_F(CliTest, invalid_mount) {
-  std::vector<std::string> argv = {"-v", "-k", "", "/bin/sh"};
-
-  // Missing source.
-  argv[2] = "";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  // Missing dest.
-  argv[2] = "none";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-
-  // Missing type.
-  argv[2] = "none,/";
-  ASSERT_EXIT(parse_args_(argv), testing::ExitedWithCode(1), "");
-}
diff --git a/syscall_wrapper.c b/syscall_wrapper.c
index dd6f826..5d57940 100644
--- a/syscall_wrapper.c
+++ b/syscall_wrapper.c
@@ -9,25 +9,6 @@
 #include <sys/syscall.h>
 #include <unistd.h>
 
-/*
- * Older glibc builds predate seccomp inclusion.  These arches are the ones
- * AOSP needs and doesn't provide anything newer.  All other targets can upgrade
- * their kernel headers.
- */
-#ifndef SYS_seccomp
-# if defined(__x86_64__)
-#  define SYS_seccomp 317
-# elif defined(__i386__)
-#  define SYS_seccomp 354
-# elif defined(__aarch64__)
-#  define SYS_seccomp 277
-# elif defined(__arm__)
-#  define SYS_seccomp 383
-# else
-#  error "Update your kernel headers"
-# endif
-#endif
-
 int sys_seccomp(unsigned int operation, unsigned int flags, void *args)
 {
 	return syscall(SYS_seccomp, operation, flags, args);
