diff options
author | Logan Chien <loganchien@google.com> | 2019-01-30 18:37:09 -0800 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-01-30 18:37:09 -0800 |
commit | de7c431ad13287f14b437a1d7cdd5449957f5fff (patch) | |
tree | 0e8f6fd9fcc4dfc7c1cce77090a9855b05e36c92 | |
parent | 2ddfd9cf52eb1dccca7c849bc5c46157d1cbb3ce (diff) | |
parent | cf6869990ca273f91ee9e6bf8389e4082432ecd6 (diff) | |
download | build_soong-de7c431ad13287f14b437a1d7cdd5449957f5fff.tar.gz build_soong-de7c431ad13287f14b437a1d7cdd5449957f5fff.tar.bz2 build_soong-de7c431ad13287f14b437a1d7cdd5449957f5fff.zip |
Merge "Add a header_abi_checker section" am: 4c20135b19
am: cf6869990c
Change-Id: Icde8e896cda9a91c36c12562918a9da010580852
-rw-r--r-- | cc/builder.go | 19 | ||||
-rw-r--r-- | cc/library.go | 18 |
2 files changed, 34 insertions, 3 deletions
diff --git a/cc/builder.go b/cc/builder.go index b012d6f0..645b3c23 100644 --- a/cc/builder.go +++ b/cc/builder.go @@ -663,18 +663,33 @@ func TransformObjToDynamicBinary(ctx android.ModuleContext, // Generate a rule to combine .dump sAbi dump files from multiple source files // into a single .ldump sAbi dump file func TransformDumpToLinkedDump(ctx android.ModuleContext, sAbiDumps android.Paths, soFile android.Path, - baseName, exportedHeaderFlags string) android.OptionalPath { + baseName, exportedHeaderFlags string, symbolFile android.OptionalPath, + excludedSymbolVersions, excludedSymbolTags []string) android.OptionalPath { + outputFile := android.PathForModuleOut(ctx, baseName+".lsdump") sabiLock.Lock() lsdumpPaths = append(lsdumpPaths, outputFile.String()) sabiLock.Unlock() + + implicits := android.Paths{soFile} symbolFilterStr := "-so " + soFile.String() + + if symbolFile.Valid() { + implicits = append(implicits, symbolFile.Path()) + symbolFilterStr += " -v " + symbolFile.String() + } + for _, ver := range excludedSymbolVersions { + symbolFilterStr += " --exclude-symbol-version " + ver + } + for _, tag := range excludedSymbolTags { + symbolFilterStr += " --exclude-symbol-tag " + tag + } ctx.Build(pctx, android.BuildParams{ Rule: sAbiLink, Description: "header-abi-linker " + outputFile.Base(), Output: outputFile, Inputs: sAbiDumps, - Implicit: soFile, + Implicits: implicits, Args: map[string]string{ "symbolFilter": symbolFilterStr, "arch": ctx.Arch().ArchType.Name, diff --git a/cc/library.go b/cc/library.go index ad07db47..138ba43b 100644 --- a/cc/library.go +++ b/cc/library.go @@ -87,6 +87,19 @@ type LibraryProperties struct { // binaries would be installed by default (in PRODUCT_PACKAGES) the other library will be removed // from PRODUCT_PACKAGES. Overrides []string + + // Properties for ABI compatibility checker + Header_abi_checker struct { + // Path to a symbol file that specifies the symbols to be included in the generated + // ABI dump file + Symbol_file *string + + // Symbol versions that should be ignored from the symbol file + Exclude_symbol_versions []string + + // Symbol tags that should be ignored from the symbol file + Exclude_symbol_tags []string + } } type LibraryMutatedProperties struct { @@ -760,7 +773,10 @@ func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, objs Objec SourceAbiFlags = append(SourceAbiFlags, reexportedInclude) } exportedHeaderFlags := strings.Join(SourceAbiFlags, " ") - library.sAbiOutputFile = TransformDumpToLinkedDump(ctx, objs.sAbiDumpFiles, soFile, fileName, exportedHeaderFlags) + library.sAbiOutputFile = TransformDumpToLinkedDump(ctx, objs.sAbiDumpFiles, soFile, fileName, exportedHeaderFlags, + android.OptionalPathForModuleSrc(ctx, library.Properties.Header_abi_checker.Symbol_file), + library.Properties.Header_abi_checker.Exclude_symbol_versions, + library.Properties.Header_abi_checker.Exclude_symbol_tags) refAbiDumpFile := getRefAbiDumpFile(ctx, vndkVersion, fileName) if refAbiDumpFile != nil { |