super partition: include lpdump utility

Change-Id: Ifaac3b660ae3d46d9f1589470dcf6fd7c21b8ef8
diff --git a/Android.mk b/Android.mk
index 80af9ba..8cdf057 100755
--- a/Android.mk
+++ b/Android.mk
@@ -156,7 +156,10 @@
 ifeq ($(PRODUCT_USE_DYNAMIC_PARTITIONS),true)
     LOCAL_CFLAGS += -DPRODUCT_USE_DYNAMIC_PARTITIONS=1
     TWRP_REQUIRED_MODULES += android.hardware.health@2.1-service android.hardware.health@2.1-impl.recovery android.hardware.health@2.1-service.rc android.hardware.health@2.1.xml
-    TWRP_REQUIRED_MODULES += android.hardware.health@2.0-service android.hardware.health@2.0-impl.recovery android.hardware.health@2.0-service.rc
+    TWRP_REQUIRED_MODULES += android.hardware.health@2.0-service android.hardware.health@2.0-impl.recovery android.hardware.health@2.0-service.rc 
+    ifeq ($(TW_EXCLUDE_LPDUMP),)
+        TWRP_REQUIRED_MODULES += lpdump lpdumpd.rc
+    endif
 endif
 
 ifeq ($(TW_USES_VENDOR_LIBS),true)
diff --git a/etc/Android.mk b/etc/Android.mk
index 8cef51b..a6f309b 100755
--- a/etc/Android.mk
+++ b/etc/Android.mk
@@ -117,6 +117,14 @@
 	LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/system/etc/init
 	LOCAL_SRC_FILES := init/$(LOCAL_MODULE)
 	include $(BUILD_PREBUILT)
+
+	include $(CLEAR_VARS)
+	LOCAL_MODULE := lpdumpd.rc
+	LOCAL_MODULE_TAGS := optional
+	LOCAL_MODULE_CLASS := EXECUTABLES
+	LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/system/etc/init
+	LOCAL_SRC_FILES := init/$(LOCAL_MODULE)
+	include $(BUILD_PREBUILT)
 endif
 
 ifneq ($(TW_INCLUDE_CRYPTO),)
diff --git a/etc/init/lpdumpd.rc b/etc/init/lpdumpd.rc
new file mode 100644
index 0000000..63b6c9d
--- /dev/null
+++ b/etc/init/lpdumpd.rc
@@ -0,0 +1,36 @@
+#
+# Copyright (C) 2019 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.
+#
+
+service lpdumpd /system/bin/lpdumpd
+    # TODO(b/129011369): make this killable by lmkd
+    oneshot
+    disabled
+    user root
+    group root
+    # On Launch devices, assume "super". On virtual devices, ${ro.boot.super_partition}
+    # might be something else.
+    file /dev/block/by-name/${ro.boot.super_partition:-super} r
+    # On retrofit devices, ${ro.boot.super_partition} is slot-suffixed.
+    # Use NO_SUCH_DEVICE_NO_SUCH_SUFFIX as default values so that host_init_verifier does
+    # not complain about missing sysprops
+    file /dev/block/by-name/${ro.boot.super_partition:-NO_SUCH_DEVICE}${ro.boot.slot_suffix:-_NO_SUCH_SUFFIX} r
+    seclabel u:r:recovery:s0
+
+on property:sys.lpdumpd=start
+    start lpdumpd
+
+on property:sys.lpdumpd=stop
+    stop lpdumpd
diff --git a/prebuilt/Android.mk b/prebuilt/Android.mk
index 114e9d7..61ac255 100755
--- a/prebuilt/Android.mk
+++ b/prebuilt/Android.mk
@@ -232,7 +232,14 @@
     RECOVERY_BINARY_SOURCE_FILES += $(TARGET_RECOVERY_ROOT_OUT)/system/bin/update_engine_sideload
     RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/android.hardware.boot@1.0.so
     RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/android.hardware.boot@1.1.so
-    RECOVERY_BINARY_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/bootctl
+    ifeq ($(TW_EXCLUDE_LPDUMP),)
+        RECOVERY_BINARY_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/bootctl
+        RECOVERY_BINARY_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/lpdump
+        RECOVERY_BINARY_SOURCE_FILES += $(TARGET_OUT_EXECUTABLES)/lpdumpd
+        RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/liblpdump.so
+        RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/liblpdump_interface-V1-cpp.so
+        RECOVERY_LIBRARY_SOURCE_FILES += $(TARGET_OUT_SHARED_LIBRARIES)/libprotobuf-cpp-full.so
+    endif
 endif
 
 ifneq ($(wildcard system/core/libsparse/Android.*),)