aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLogan Chien <loganchien@google.com>2019-01-30 18:37:09 -0800
committerandroid-build-merger <android-build-merger@google.com>2019-01-30 18:37:09 -0800
commitde7c431ad13287f14b437a1d7cdd5449957f5fff (patch)
tree0e8f6fd9fcc4dfc7c1cce77090a9855b05e36c92
parent2ddfd9cf52eb1dccca7c849bc5c46157d1cbb3ce (diff)
parentcf6869990ca273f91ee9e6bf8389e4082432ecd6 (diff)
downloadbuild_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.go19
-rw-r--r--cc/library.go18
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 {