[am] respect ABI override when selecting ISA for new process
When starting a new process, we used to ignore the value of abi override. This caused issues like b/169261423, when the abi override specified 32-bit, but the new process was still running as 64-bit. This CL fixes that. BUG: 169261423 BUG: 73555088 Test: (with ag/12720566 reverted) Test: atest CtsAbiOverrideHostTestCases Test: atest android.view.cts.ASurfaceControlTest#testSurfaceTransaction_setColorAndBuffer_bufferAlpha_0_5 -- --abi=armeabi-v7a Test: atest android.extractnativelibs.cts.CtsExtractNativeLibsHostTestAbiOverride Change-Id: I99a3c691c58948d6070c6ed9f81be746f492b84f
This commit is contained in:
@@ -1918,7 +1918,9 @@ public final class ProcessList {
|
||||
|
||||
String instructionSet = null;
|
||||
if (app.info.primaryCpuAbi != null) {
|
||||
instructionSet = VMRuntime.getInstructionSet(app.info.primaryCpuAbi);
|
||||
// If ABI override is specified, use the isa derived from the value of ABI override.
|
||||
// Otherwise, use the isa derived from primary ABI
|
||||
instructionSet = VMRuntime.getInstructionSet(requiredAbi);
|
||||
}
|
||||
|
||||
app.gids = gids;
|
||||
@@ -1927,7 +1929,7 @@ public final class ProcessList {
|
||||
|
||||
// If instructionSet is non-null, this indicates that the system_server is spawning a
|
||||
// process with an ISA that may be different from its own. System (kernel and hardware)
|
||||
// compatililty for these features is checked in the decideTaggingLevel in the
|
||||
// compatibility for these features is checked in the decideTaggingLevel in the
|
||||
// system_server process (not the child process). As both MTE and TBI are only supported
|
||||
// in aarch64, we can simply ensure that the new process is also aarch64. This prevents
|
||||
// the mismatch where a 64-bit system server spawns a 32-bit child that thinks it should
|
||||
|
||||
Reference in New Issue
Block a user