Skip to content

Commit 111f979

Browse files
a-sivaCommit Queue
authored andcommitted
Add QEMU_LD_PREFIX environment variables so tests that spawn new processes also get the library path setup correctly.
Change-Id: I1232925b037f897ff1fa38503cbe4e32d07cb388 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/435661 Commit-Queue: Siva Annamalai <[email protected]> Reviewed-by: Ryan Macnak <[email protected]>
1 parent b37d8c2 commit 111f979

File tree

3 files changed

+26
-16
lines changed

3 files changed

+26
-16
lines changed

pkg/test_runner/lib/src/compiler_configuration.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1251,8 +1251,10 @@ class AppJitCompilerConfiguration extends CompilerConfiguration {
12511251
if (_configuration.useQemu) {
12521252
final config = QemuConfig.all[_configuration.architecture]!;
12531253
arguments.insert(0, executable);
1254-
arguments.insertAll(0, config.arguments);
12551254
executable = config.executable;
1255+
if (environmentOverrides['QEMU_LD_PREFIX'] == null) {
1256+
environmentOverrides['QEMU_LD_PREFIX'] = config.elfInterpreterPrefix;
1257+
}
12561258
}
12571259
var command = CompilationCommand('app_jit', tempDir,
12581260
bootstrapDependencies(), executable, arguments, environmentOverrides,

pkg/test_runner/lib/src/runtime_configuration.dart

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -297,29 +297,29 @@ class JsshellRuntimeConfiguration extends CommandLineJavaScriptRuntime {
297297
class QemuConfig {
298298
static const all = <Architecture, QemuConfig>{
299299
Architecture.ia32:
300-
QemuConfig('qemu-i386', ['-L', '/usr/lib/i386-linux-gnu/']),
300+
QemuConfig('qemu-i386', '/usr/lib/i386-linux-gnu/'),
301301
Architecture.x64:
302-
QemuConfig('qemu-x86_64', ['-L', '/usr/lib/x86_64-linux-gnu/']),
302+
QemuConfig('qemu-x86_64', '/usr/lib/x86_64-linux-gnu/'),
303303
Architecture.x64c:
304-
QemuConfig('qemu-x86_64', ['-L', '/usr/lib/x86_64-linux-gnu/']),
304+
QemuConfig('qemu-x86_64', '/usr/lib/x86_64-linux-gnu/'),
305305
Architecture.arm:
306-
QemuConfig('qemu-arm', ['-L', '/usr/arm-linux-gnueabihf/']),
306+
QemuConfig('qemu-arm', '/usr/arm-linux-gnueabihf/'),
307307
Architecture.arm64:
308-
QemuConfig('qemu-aarch64', ['-L', '/usr/aarch64-linux-gnu/']),
308+
QemuConfig('qemu-aarch64', '/usr/aarch64-linux-gnu/'),
309309
Architecture.simarm64_arm64:
310-
QemuConfig('qemu-aarch64', ['-L', '/usr/aarch64-linux-gnu/']),
310+
QemuConfig('qemu-aarch64', '/usr/aarch64-linux-gnu/'),
311311
Architecture.arm64c:
312-
QemuConfig('qemu-aarch64', ['-L', '/usr/aarch64-linux-gnu/']),
312+
QemuConfig('qemu-aarch64', '/usr/aarch64-linux-gnu/'),
313313
Architecture.riscv32:
314-
QemuConfig('qemu-riscv32', ['-L', '/usr/riscv32-linux-gnu/']),
314+
QemuConfig('qemu-riscv32', '/usr/riscv32-linux-gnu/'),
315315
Architecture.riscv64:
316-
QemuConfig('qemu-riscv64', ['-L', '/usr/riscv64-linux-gnu/']),
316+
QemuConfig('qemu-riscv64', '/usr/riscv64-linux-gnu/'),
317317
};
318318

319319
final String executable;
320-
final List<String> arguments;
320+
final String elfInterpreterPrefix;
321321

322-
const QemuConfig(this.executable, this.arguments);
322+
const QemuConfig(this.executable, this.elfInterpreterPrefix);
323323
}
324324

325325
/// Common runtime configuration for runtimes based on the Dart VM.
@@ -408,8 +408,10 @@ class StandaloneDartRuntimeConfiguration extends DartVmRuntimeConfiguration {
408408
if (_configuration.useQemu) {
409409
final config = QemuConfig.all[_configuration.architecture]!;
410410
arguments.insert(0, executable);
411-
arguments.insertAll(0, config.arguments);
412411
executable = config.executable;
412+
if (environmentOverrides['QEMU_LD_PREFIX'] == null) {
413+
environmentOverrides['QEMU_LD_PREFIX'] = config.elfInterpreterPrefix;
414+
}
413415
}
414416
var command = VMCommand(executable, arguments, environmentOverrides);
415417
if (_configuration.rr && !isCrashExpected) {
@@ -443,8 +445,10 @@ class DartPrecompiledRuntimeConfiguration extends DartVmRuntimeConfiguration {
443445
if (_configuration.useQemu) {
444446
final config = QemuConfig.all[_configuration.architecture]!;
445447
arguments.insert(0, executable);
446-
arguments.insertAll(0, config.arguments);
447448
executable = config.executable;
449+
if (environmentOverrides['QEMU_LD_PREFIX'] == null) {
450+
environmentOverrides['QEMU_LD_PREFIX'] = config.elfInterpreterPrefix;
451+
}
448452
}
449453

450454
var command = VMCommand(executable, arguments, environmentOverrides);

pkg/test_runner/lib/src/test_suite.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ abstract class TestSuite {
7171
if (configuration.firefoxPath != null)
7272
'FIREFOX_PATH':
7373
Uri.base.resolve(configuration.firefoxPath!).toFilePath(),
74+
if (configuration.useQemu)
75+
'QEMU_LD_PREFIX':
76+
QemuConfig.all[configuration.architecture]!
77+
.elfInterpreterPrefix,
7478
};
7579

7680
Map<String, String> get environmentOverrides => _environmentOverrides;
@@ -291,9 +295,9 @@ class VMTestSuite extends TestSuite {
291295
if (configuration.useQemu) {
292296
final config = QemuConfig.all[configuration.architecture]!;
293297
initialHostArguments.insert(0, hostRunnerPath);
294-
initialHostArguments.insertAll(0, config.arguments);
298+
initialHostArguments.insertAll(0, ['-L', config.elfInterpreterPrefix]);
295299
initialTargetArguments.insert(0, targetRunnerPath);
296-
initialTargetArguments.insertAll(0, config.arguments);
300+
initialTargetArguments.insertAll(0, ['-L', config.elfInterpreterPrefix]);
297301
hostRunnerPath = config.executable;
298302
targetRunnerPath = config.executable;
299303
}

0 commit comments

Comments
 (0)