summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kenny Root <kroot@google.com> 2012-01-13 13:39:28 -0800
committer Kenny Root <kroot@google.com> 2012-01-13 13:39:28 -0800
commitfcbbaf1d837e96e77d0ec45a050e8a41060ae7f3 (patch)
tree885ea6d805e09736e18cf5bd60c9ff6c9257234b
parentf88d1493aa968d3da551116f076edd5e21f7ccfc (diff)
parente80341c8c5d0a0e20ff96c3f2314abd9a0fdb0cf (diff)
resolved conflicts for merge of e80341c8 to master
Change-Id: I5d2150e20aebb6aba10caa391268c0fdbbf281ef
-rw-r--r--core/jni/com_android_internal_content_NativeLibraryHelper.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
index a5b85b4a4c48..b68c97a6cd5d 100644
--- a/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
+++ b/core/jni/com_android_internal_content_NativeLibraryHelper.cpp
@@ -283,6 +283,7 @@ iterateOverNativeFiles(JNIEnv *env, jstring javaFilePath, jstring javaCpuAbi, js
const int N = zipFile.getNumEntries();
char fileName[PATH_MAX];
+ bool hasPrimaryAbi = false;
for (int i = 0; i < N; i++) {
const ZipEntryRO entry = zipFile.findEntryByIndex(i);
@@ -318,11 +319,22 @@ iterateOverNativeFiles(JNIEnv *env, jstring javaFilePath, jstring javaCpuAbi, js
if (cpuAbi.size() == cpuAbiRegionSize
&& *(cpuAbiOffset + cpuAbi.size()) == '/'
&& !strncmp(cpuAbiOffset, cpuAbi.c_str(), cpuAbiRegionSize)) {
- ALOGV("Using ABI %s\n", cpuAbi.c_str());
+ ALOGV("Using primary ABI %s\n", cpuAbi.c_str());
+ hasPrimaryAbi = true;
} else if (cpuAbi2.size() == cpuAbiRegionSize
&& *(cpuAbiOffset + cpuAbi2.size()) == '/'
&& !strncmp(cpuAbiOffset, cpuAbi2.c_str(), cpuAbiRegionSize)) {
- ALOGV("Using ABI %s\n", cpuAbi2.c_str());
+
+ /*
+ * If this library matches both the primary and secondary ABIs,
+ * only use the primary ABI.
+ */
+ if (hasPrimaryAbi) {
+ ALOGV("Already saw primary ABI, skipping secondary ABI %s\n", cpuAbi2.c_str());
+ continue;
+ } else {
+ ALOGV("Using secondary ABI %s\n", cpuAbi2.c_str());
+ }
} else {
ALOGV("abi didn't match anything: %s (end at %zd)\n", cpuAbiOffset, cpuAbiRegionSize);
continue;