diff --git a/property_service/libpropertyinfoparser/Android.bp b/property_service/libpropertyinfoparser/Android.bp
index e0cd30c..ffaa2b3 100644
--- a/property_service/libpropertyinfoparser/Android.bp
+++ b/property_service/libpropertyinfoparser/Android.bp
@@ -1,7 +1,6 @@
 cc_library_static {
     name: "libpropertyinfoparser",
     host_supported: true,
-    vendor_available: true,
     srcs: ["property_info_parser.cpp"],
 
     cpp_std: "experimental",
diff --git a/property_service/libpropertyinfoserializer/Android.bp b/property_service/libpropertyinfoserializer/Android.bp
index 5de7477..0a1593b 100644
--- a/property_service/libpropertyinfoserializer/Android.bp
+++ b/property_service/libpropertyinfoserializer/Android.bp
@@ -1,7 +1,6 @@
 cc_defaults {
     name: "propertyinfoserializer_defaults",
     host_supported: true,
-    vendor_available: true,
     cpp_std: "experimental",
     target: {
         linux: {
diff --git a/shell_and_utilities/README.md b/shell_and_utilities/README.md
index c423c69..206204b 100644
--- a/shell_and_utilities/README.md
+++ b/shell_and_utilities/README.md
@@ -175,18 +175,18 @@
 
 one-true-awk: awk
 
-toolbox: getevent getprop newfs\_msdos
+toolbox: getevent newfs\_msdos
 
 toybox: acpi base64 basename blockdev cal cat chcon chgrp chmod chown
 chroot chrt cksum clear cmp comm cp cpio cut date df diff dirname dmesg
 dos2unix du echo env expand expr fallocate false file find flock free
-getenforce groups gunzip gzip head hostname hwclock id ifconfig inotifyd
-insmod ionice iorenice kill killall ln load\_policy log logname losetup
-ls lsmod lsof lspci lsusb md5sum microcom mkdir mkfifo mknod mkswap
-mktemp modinfo modprobe more mount mountpoint mv netstat nice nl nohup
-od paste patch pgrep pidof pkill pmap printenv printf ps pwd readlink
-realpath renice restorecon rm rmdir rmmod runcon sed sendevent seq
-setenforce setprop setsid sha1sum sha224sum sha256sum sha384sum
+getenforce getprop groups gunzip gzip head hostname hwclock id ifconfig
+inotifyd insmod ionice iorenice kill killall ln load\_policy log logname
+losetup ls lsmod lsof lspci lsusb md5sum microcom mkdir mkfifo mknod
+mkswap mktemp modinfo modprobe more mount mountpoint mv netstat nice
+nl nohup od paste patch pgrep pidof pkill pmap printenv printf ps pwd
+readlink realpath renice restorecon rm rmdir rmmod runcon sed sendevent
+seq setenforce setprop setsid sha1sum sha224sum sha256sum sha384sum
 sha512sum sleep sort split start stat stop strings swapoff swapon sync
 sysctl tac tail tar taskset tee time timeout top touch tr true truncate
 tty ulimit umount uname uniq unix2dos uptime usleep uudecode uuencode
diff --git a/toolbox/Android.bp b/toolbox/Android.bp
index de8324a..b5d16b8 100644
--- a/toolbox/Android.bp
+++ b/toolbox/Android.bp
@@ -34,7 +34,7 @@
 
 genrule {
     name: "toolbox_tools",
-    cmd: "echo '/* file generated automatically */' >$(out) && for t in toolbox dd getevent newfs_msdos getprop; do echo \"TOOL($$t)\" >>$(out); done",
+    cmd: "echo '/* file generated automatically */' >$(out) && for t in toolbox dd getevent newfs_msdos; do echo \"TOOL($$t)\" >>$(out); done",
     out: ["tools.h"],
 }
 
@@ -52,7 +52,6 @@
     srcs: [
         "toolbox.c",
         "getevent.c",
-        "getprop.cpp",
         "newfs_msdos.c",
     ],
     generated_headers: [
@@ -61,18 +60,12 @@
     ],
     whole_static_libs: ["libtoolbox_dd"],
     shared_libs: [
-        "libbase",
         "libcutils",
     ],
-    static_libs: [
-        "libpropertyinfoparser",
-    ],
-    cpp_std: "gnu++1z",
 
     symlinks: [
         "dd",
         "getevent",
-        "getprop",
         "newfs_msdos",
     ],
 }
diff --git a/toolbox/getprop.cpp b/toolbox/getprop.cpp
deleted file mode 100644
index 7818ff2..0000000
--- a/toolbox/getprop.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// Copyright (C) 2017 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-
-#include <getopt.h>
-#include <sys/system_properties.h>
-
-#include <iostream>
-#include <string>
-#include <vector>
-
-#include <android-base/properties.h>
-#include <property_info_parser/property_info_parser.h>
-
-using android::base::GetProperty;
-using android::properties::PropertyInfoAreaFile;
-
-PropertyInfoAreaFile property_info_file;
-
-void PrintAllProperties(bool print_property_context) {
-  std::vector<std::pair<std::string, std::string>> properties;
-  __system_property_foreach(
-      [](const prop_info* pi, void* cookie) {
-        __system_property_read_callback(
-            pi,
-            [](void* cookie, const char* name, const char* value, unsigned) {
-              auto properties =
-                  reinterpret_cast<std::vector<std::pair<std::string, std::string>>*>(cookie);
-              properties->emplace_back(name, value);
-            },
-            cookie);
-      },
-      &properties);
-
-  std::sort(properties.begin(), properties.end());
-
-  if (print_property_context) {
-    for (auto& [name, value] : properties) {
-      const char* context = nullptr;
-      property_info_file->GetPropertyInfo(name.c_str(), &context, nullptr);
-      value = context;
-    }
-  }
-
-  for (const auto& [name, value] : properties) {
-    std::cout << "[" << name << "]: [" << value << "]" << std::endl;
-  }
-}
-
-void PrintProperty(const char* name, const char* default_value, bool print_property_context) {
-  if (print_property_context) {
-    const char* context = nullptr;
-    property_info_file->GetPropertyInfo(name, &context, nullptr);
-    std::cout << context << std::endl;
-  } else {
-    std::cout << GetProperty(name, default_value) << std::endl;
-  }
-}
-
-extern "C" int getprop_main(int argc, char** argv) {
-  bool print_property_context = false;
-
-  while (true) {
-    static const struct option long_options[] = {
-        {"help", no_argument, nullptr, 'h'},
-        {nullptr, 0, nullptr, 0},
-    };
-
-    int arg = getopt_long(argc, argv, "Z", long_options, nullptr);
-
-    if (arg == -1) {
-      break;
-    }
-
-    switch (arg) {
-      case 'h':
-        std::cout << "usage: getprop [-Z] [NAME [DEFAULT]]\n\n"
-                     "Gets an Android system property, or lists them all.\n"
-                     "Use -Z to return the property context instead of the property value\n"
-                  << std::endl;
-        return 0;
-      case 'Z':
-        print_property_context = true;
-        break;
-      case '?':
-        return -1;
-      default:
-        std::cerr << "getprop: getopt returned invalid result: " << arg << std::endl;
-        return -1;
-    }
-  }
-
-  if (print_property_context) {
-    property_info_file.LoadDefaultPath();
-    if (!property_info_file) {
-      std::cerr << "Unable to load property info file" << std::endl;
-      return -1;
-    }
-  }
-
-  if (optind >= argc) {
-    PrintAllProperties(print_property_context);
-    return 0;
-  }
-
-  if (optind < argc - 2) {
-    std::cerr << "getprop: Max 2 arguments (see \"getprop --help\")" << std::endl;
-    return -1;
-  }
-
-  PrintProperty(argv[optind], (optind == argc - 1) ? "" : argv[optind + 1], print_property_context);
-
-  return 0;
-}
