Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d32e3dff authored by Hsin-Yi Chen's avatar Hsin-Yi Chen Committed by Gerrit Code Review
Browse files

Merge "Let header-abi-linker filter llndk, apex, and systemapi symbols" into main

parents 2d5e7579 f6fc525a
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -855,8 +855,8 @@ func transformObjToDynamicBinary(ctx android.ModuleContext,
// into a single .ldump sAbi dump file
func transformDumpToLinkedDump(ctx android.ModuleContext, sAbiDumps android.Paths, soFile android.Path,
	baseName string, exportedIncludeDirs []string, symbolFile android.OptionalPath,
	excludedSymbolVersions, excludedSymbolTags []string,
	api string) android.Path {
	excludedSymbolVersions, excludedSymbolTags, includedSymbolTags []string,
	api string, isLlndk bool) android.Path {

	outputFile := android.PathForModuleOut(ctx, baseName+".lsdump")

@@ -874,6 +874,12 @@ func transformDumpToLinkedDump(ctx android.ModuleContext, sAbiDumps android.Path
	for _, tag := range excludedSymbolTags {
		symbolFilterStr += " --exclude-symbol-tag " + tag
	}
	for _, tag := range includedSymbolTags {
		symbolFilterStr += " --include-symbol-tag " + tag
	}
	if isLlndk {
		symbolFilterStr += " --symbol-tag-policy MatchTagOnly"
	}
	apiLevelsJson := android.GetApiLevelsJson(ctx)
	implicits = append(implicits, apiLevelsJson)
	symbolFilterStr += " --api-map " + apiLevelsJson.String()
+10 −8
Original line number Diff line number Diff line
@@ -1249,28 +1249,29 @@ func (library *libraryDecorator) llndkIncludeDirsForAbiCheck(ctx ModuleContext,

func (library *libraryDecorator) linkLlndkSAbiDumpFiles(ctx ModuleContext,
	deps PathDeps, sAbiDumpFiles android.Paths, soFile android.Path, libFileName string,
	excludeSymbolVersions, excludeSymbolTags []string) android.Path {
	excludeSymbolVersions, excludeSymbolTags []string,
	vendorApiLevel string) android.Path {
	// NDK symbols in version 34 are LLNDK symbols. Those in version 35 are not.
	// TODO(b/314010764): Add parameters to read LLNDK symbols from the symbol file.
	return transformDumpToLinkedDump(ctx,
		sAbiDumpFiles, soFile, libFileName+".llndk",
		library.llndkIncludeDirsForAbiCheck(ctx, deps),
		android.OptionalPathForModuleSrc(ctx, library.Properties.Llndk.Symbol_file),
		append([]string{"*_PLATFORM", "*_PRIVATE"}, excludeSymbolVersions...),
		append([]string{"platform-only"}, excludeSymbolTags...),
		"34")
		[]string{"llndk=" + vendorApiLevel}, "34", true /* isLlndk */)
}

func (library *libraryDecorator) linkApexSAbiDumpFiles(ctx ModuleContext,
	deps PathDeps, sAbiDumpFiles android.Paths, soFile android.Path, libFileName string,
	excludeSymbolVersions, excludeSymbolTags []string, sdkVersion string) android.Path {
	excludeSymbolVersions, excludeSymbolTags []string,
	sdkVersion string) android.Path {
	return transformDumpToLinkedDump(ctx,
		sAbiDumpFiles, soFile, libFileName+".apex",
		library.exportedIncludeDirsForAbiCheck(ctx),
		android.OptionalPathForModuleSrc(ctx, library.Properties.Stubs.Symbol_file),
		append([]string{"*_PLATFORM", "*_PRIVATE"}, excludeSymbolVersions...),
		append([]string{"platform-only"}, excludeSymbolTags...),
		sdkVersion)
		[]string{"apex", "systemapi"}, sdkVersion, false /* isLlndk */)
}

func getRefAbiDumpFile(ctx android.ModuleInstallPathContext,
@@ -1397,18 +1398,19 @@ func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, deps PathD
			android.OptionalPathForModuleSrc(ctx, library.symbolFileForAbiCheck(ctx)),
			headerAbiChecker.Exclude_symbol_versions,
			headerAbiChecker.Exclude_symbol_tags,
			currSdkVersion)
			[]string{} /* includeSymbolTags */, currSdkVersion, false /* isLlndk */)

		var llndkDump, apexVariantDump android.Path
		tags := classifySourceAbiDump(ctx)
		for _, tag := range tags {
			if tag == llndkLsdumpTag {
			if tag == llndkLsdumpTag && currVendorVersion != "" {
				if llndkDump == nil {
					// TODO(b/323447559): Evaluate if replacing sAbiDumpFiles with implDump is faster
					llndkDump = library.linkLlndkSAbiDumpFiles(ctx,
						deps, objs.sAbiDumpFiles, soFile, fileName,
						headerAbiChecker.Exclude_symbol_versions,
						headerAbiChecker.Exclude_symbol_tags)
						headerAbiChecker.Exclude_symbol_tags,
						currVendorVersion)
				}
				addLsdumpPath(string(tag) + ":" + llndkDump.String())
			} else if tag == apexLsdumpTag {