Merge "Checks that secondary instrumentation ABI matches" into pi-dev

am: 096e0587d2

Change-Id: I87d562322a5b77de9a17dfd803da2c4aa4f2027c
This commit is contained in:
Patrick Baumann
2018-04-17 11:30:24 -07:00
committed by android-build-merger
3 changed files with 28 additions and 1 deletions

View File

@@ -5442,7 +5442,8 @@ public final class ActivityThread extends ClientTransactionHandler {
* runtime's instruction set is.
*/
private String getInstrumentationLibrary(ApplicationInfo appInfo, InstrumentationInfo insInfo) {
if (appInfo.primaryCpuAbi != null && appInfo.secondaryCpuAbi != null) {
if (appInfo.primaryCpuAbi != null && appInfo.secondaryCpuAbi != null
&& appInfo.secondaryCpuAbi.equals(insInfo.secondaryCpuAbi)) {
// Get the instruction set supported by the secondary ABI. In the presence
// of a native bridge this might be different than the one secondary ABI used.
String secondaryIsa =
@@ -5671,6 +5672,16 @@ public final class ActivityThread extends ClientTransactionHandler {
"Unable to find instrumentation info for: " + data.instrumentationName);
}
// Warn of potential ABI mismatches.
if (!Objects.equals(data.appInfo.primaryCpuAbi, ii.primaryCpuAbi)
|| !Objects.equals(data.appInfo.secondaryCpuAbi, ii.secondaryCpuAbi)) {
Slog.w(TAG, "Package uses different ABI(s) than its instrumentation: "
+ "package[" + data.appInfo.packageName + "]: "
+ data.appInfo.primaryCpuAbi + ", " + data.appInfo.secondaryCpuAbi
+ " instrumentation[" + ii.packageName + "]: "
+ ii.primaryCpuAbi + ", " + ii.secondaryCpuAbi);
}
mInstrumentationPackageName = ii.packageName;
mInstrumentationAppDir = ii.sourceDir;
mInstrumentationSplitAppDirs = ii.splitSourceDirs;

View File

@@ -101,6 +101,12 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
/** {@hide} */
public String credentialProtectedDataDir;
/** {@hide} */
public String primaryCpuAbi;
/** {@hide} */
public String secondaryCpuAbi;
/** {@hide} Full path to the directory containing primary ABI native libraries. */
public String nativeLibraryDir;
@@ -131,6 +137,8 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
dataDir = orig.dataDir;
deviceProtectedDataDir = orig.deviceProtectedDataDir;
credentialProtectedDataDir = orig.credentialProtectedDataDir;
primaryCpuAbi = orig.primaryCpuAbi;
secondaryCpuAbi = orig.secondaryCpuAbi;
nativeLibraryDir = orig.nativeLibraryDir;
secondaryNativeLibraryDir = orig.secondaryNativeLibraryDir;
handleProfiling = orig.handleProfiling;
@@ -160,6 +168,8 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
dest.writeString(dataDir);
dest.writeString(deviceProtectedDataDir);
dest.writeString(credentialProtectedDataDir);
dest.writeString(primaryCpuAbi);
dest.writeString(secondaryCpuAbi);
dest.writeString(nativeLibraryDir);
dest.writeString(secondaryNativeLibraryDir);
dest.writeInt((handleProfiling == false) ? 0 : 1);
@@ -190,6 +200,8 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
dataDir = source.readString();
deviceProtectedDataDir = source.readString();
credentialProtectedDataDir = source.readString();
primaryCpuAbi = source.readString();
secondaryCpuAbi = source.readString();
nativeLibraryDir = source.readString();
secondaryNativeLibraryDir = source.readString();
handleProfiling = source.readInt() != 0;
@@ -208,6 +220,8 @@ public class InstrumentationInfo extends PackageItemInfo implements Parcelable {
ai.dataDir = dataDir;
ai.deviceProtectedDataDir = deviceProtectedDataDir;
ai.credentialProtectedDataDir = credentialProtectedDataDir;
ai.primaryCpuAbi = primaryCpuAbi;
ai.secondaryCpuAbi = secondaryCpuAbi;
ai.nativeLibraryDir = nativeLibraryDir;
ai.secondaryNativeLibraryDir = secondaryNativeLibraryDir;
}

View File

@@ -11499,6 +11499,8 @@ public class PackageManagerService extends IPackageManager.Stub
a.info.dataDir = pkg.applicationInfo.dataDir;
a.info.deviceProtectedDataDir = pkg.applicationInfo.deviceProtectedDataDir;
a.info.credentialProtectedDataDir = pkg.applicationInfo.credentialProtectedDataDir;
a.info.primaryCpuAbi = pkg.applicationInfo.primaryCpuAbi;
a.info.secondaryCpuAbi = pkg.applicationInfo.secondaryCpuAbi;
a.info.nativeLibraryDir = pkg.applicationInfo.nativeLibraryDir;
a.info.secondaryNativeLibraryDir = pkg.applicationInfo.secondaryNativeLibraryDir;
mInstrumentation.put(a.getComponentName(), a);