summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pawan Wagh <waghpawan@google.com> 2024-04-11 18:00:18 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2024-04-11 18:00:18 +0000
commit829ab8b52c79385c1311e39a7e9d9adb9cf7132c (patch)
tree2e7bc13ed73f717b4fa1b4b1ed4b925735ca7fb7
parentf41a4d74c824df902a358bd2fe6975048963d7f6 (diff)
parent21fad8d46c1fc105cb36610a5424008f2e6923f5 (diff)
Merge "Flag punch hole changes with build time flag" into main am: f647719c2c am: 21fad8d46c
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/3037684 Change-Id: I6095c33c3e8f9daf06e8a28b2bccc6b55652a33b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--core/jni/Android.bp4
-rw-r--r--core/jni/com_android_internal_content_NativeLibraryHelper.cpp10
2 files changed, 14 insertions, 0 deletions
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index 1a5e3fea6f9c..773823d28d95 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -21,6 +21,7 @@ soong_config_module_type {
config_namespace: "ANDROID",
bool_variables: [
"release_binder_death_recipient_weak_from_jni",
+ "release_package_libandroid_runtime_punch_holes",
],
properties: [
"cflags",
@@ -63,6 +64,9 @@ cc_library_shared_for_libandroid_runtime {
release_binder_death_recipient_weak_from_jni: {
cflags: ["-DBINDER_DEATH_RECIPIENT_WEAK_FROM_JNI"],
},
+ release_package_libandroid_runtime_punch_holes: {
+ cflags: ["-DENABLE_PUNCH_HOLES"],
+ },
},
cpp_std: "gnu++20",
diff --git a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
index 149e57a6f5e1..faa83f8017f7 100644
--- a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
+++ b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
@@ -36,6 +36,7 @@
#include <memory>
+#include "com_android_internal_content_FileSystemUtils.h"
#include "core_jni_helpers.h"
#define RS_BITCODE_SUFFIX ".bc"
@@ -169,6 +170,15 @@ copyFileIfChanged(JNIEnv *env, void* arg, ZipFileRO* zipFile, ZipEntryRO zipEntr
return INSTALL_FAILED_INVALID_APK;
}
+#ifdef ENABLE_PUNCH_HOLES
+ // if library is uncompressed, punch hole in it in place
+ if (!punchHolesInElf64(zipFile->getZipFileName(), offset)) {
+ ALOGW("Failed to punch uncompressed elf file :%s inside apk : %s at offset: "
+ "%" PRIu64 "",
+ fileName, zipFile->getZipFileName(), offset);
+ }
+#endif // ENABLE_PUNCH_HOLES
+
return INSTALL_SUCCEEDED;
}