Optimizations to abi checking.
We now add export_static_lib_headers, export_generated_headers to the
filters while dumping the abi of a library using header-abi-dumper
(through -I<dir> additions to the invocation of header-abi-dumper and
header-abi-linker)
Also add support for zipped reference source based abi dumps.
Test: mm -j64 in hardware/interfaces/nfc/default/1.0 produces
android.hardware.nfc@1.0.so.lsdump with abi filtered out using generated
headers.
Test: Copied the linked abi dumps produced by mm -j64 in bionic/libc to
prebuilts/abi-dumps/ndk and gzipped them. Ran mm -j64 again in
bionic/libc and verified header-abi-diff getting invoked.
Bug: 32750600
Change-Id: I26210af908c87a6143e39fa25f50307acb68a387
diff --git a/cc/builder.go b/cc/builder.go
index f8b3e02..51c4ce9 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -158,9 +158,10 @@
_ = pctx.SourcePathVariable("sAbiDumper", "prebuilts/build-tools/${config.HostPrebuiltTag}/bin/header-abi-dumper")
+ // -w has been added since header-abi-dumper does not need to produce any sort of diagnostic information.
sAbiDump = pctx.AndroidStaticRule("sAbiDump",
blueprint.RuleParams{
- Command: "rm -f $out && $sAbiDumper -o ${out} $in $exportDirs -- $cFlags -Wno-packed -Qunused-arguments -isystem ${config.RSIncludePath}",
+ Command: "rm -f $out && $sAbiDumper -o ${out} $in $exportDirs -- $cFlags -w -isystem ${config.RSIncludePath}",
CommandDeps: []string{"$sAbiDumper"},
},
"cFlags", "exportDirs")
@@ -177,6 +178,7 @@
"symbolFile", "arch", "api", "exportedHeaderFlags")
_ = pctx.SourcePathVariable("sAbiDiffer", "prebuilts/build-tools/${config.HostPrebuiltTag}/bin/header-abi-diff")
+
// Abidiff check turned on in advice-only mode. Builds will not fail on abi incompatibilties / extensions.
sAbiDiff = pctx.AndroidStaticRule("sAbiDiff",
blueprint.RuleParams{
@@ -184,6 +186,11 @@
CommandDeps: []string{"$sAbiDiffer"},
},
"referenceDump", "libName", "arch")
+
+ unzipRefSAbiDump = pctx.AndroidStaticRule("unzipRefSAbiDump",
+ blueprint.RuleParams{
+ Command: "gunzip -c $in > $out",
+ })
)
func init() {
@@ -631,6 +638,17 @@
return android.OptionalPathForPath(outputFile)
}
+func UnzipRefDump(ctx android.ModuleContext, zippedRefDump android.Path, baseName string) android.Path {
+ outputFile := android.PathForModuleOut(ctx, baseName+"_ref.lsdump")
+ ctx.ModuleBuild(pctx, android.ModuleBuildParams{
+ Rule: unzipRefSAbiDump,
+ Description: "gunzip" + outputFile.Base(),
+ Output: outputFile,
+ Input: zippedRefDump,
+ })
+ return outputFile
+}
+
func SourceAbiDiff(ctx android.ModuleContext, inputDump android.Path, referenceDump android.Path,
baseName string) android.OptionalPath {
outputFile := android.PathForModuleOut(ctx, baseName+".abidiff")