Strip debug symbols from ELF library snapshots (#34250)

AOT compiled code is now packaged as an ELF library for Android targets.
By default gen_snapshot's output contains debug symbols.  The symbols could
be stripped as a separate step, but that requires NDK tools that the user
may not have available.

This change passes a gen_snapshot flag that omits the symbols, and it filters
out a warning printed when that flag is used.
This commit is contained in:
Jason Simmons 2019-06-11 13:34:24 -07:00 committed by GitHub
parent 6d0e618188
commit 89d887f331
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 1 deletions

View file

@ -63,7 +63,17 @@ class GenSnapshot {
final String hostArch = iosArch == IOSArch.armv7 ? '-i386' : '-x86_64'; final String hostArch = iosArch == IOSArch.armv7 ? '-i386' : '-x86_64';
return runCommandAndStreamOutput(<String>['/usr/bin/arch', hostArch, snapshotterPath]..addAll(args)); return runCommandAndStreamOutput(<String>['/usr/bin/arch', hostArch, snapshotterPath]..addAll(args));
} }
return runCommandAndStreamOutput(<String>[snapshotterPath]..addAll(args));
StringConverter outputFilter;
if (additionalArgs.contains('--strip')) {
// Filter out gen_snapshot's warning message about stripping debug symbols
// from ELF library snapshots.
const String kStripWarning = 'Warning: Generating ELF library without DWARF debugging information.';
outputFilter = (String line) => line != kStripWarning ? line : null;
}
return runCommandAndStreamOutput(<String>[snapshotterPath]..addAll(args),
mapFunction: outputFilter);
} }
} }
@ -138,6 +148,7 @@ class AOTSnapshotter {
outputPaths.add(aotSharedLibrary); outputPaths.add(aotSharedLibrary);
genSnapshotArgs.add('--snapshot_kind=app-aot-elf'); genSnapshotArgs.add('--snapshot_kind=app-aot-elf');
genSnapshotArgs.add('--elf=$aotSharedLibrary'); genSnapshotArgs.add('--elf=$aotSharedLibrary');
genSnapshotArgs.add('--strip');
} else { } else {
// Blob AOT snapshot. // Blob AOT snapshot.
final String vmSnapshotData = fs.path.join(outputDir.path, 'vm_snapshot_data'); final String vmSnapshotData = fs.path.join(outputDir.path, 'vm_snapshot_data');

View file

@ -418,6 +418,7 @@ void main() {
'--deterministic', '--deterministic',
'--snapshot_kind=app-aot-elf', '--snapshot_kind=app-aot-elf',
'--elf=build/foo/app.so', '--elf=build/foo/app.so',
'--strip',
'--no-sim-use-hardfp', '--no-sim-use-hardfp',
'--no-use-integer-division', '--no-use-integer-division',
'main.dill', 'main.dill',
@ -447,6 +448,7 @@ void main() {
'--deterministic', '--deterministic',
'--snapshot_kind=app-aot-elf', '--snapshot_kind=app-aot-elf',
'--elf=build/foo/app.so', '--elf=build/foo/app.so',
'--strip',
'main.dill', 'main.dill',
]); ]);
}, overrides: contextOverrides); }, overrides: contextOverrides);