Merge changes I420a5953,I8e2352f3,I7a6bb905

* changes:
  Support text ABI dump file format
  Remove vndkVsNdk()
  Remove isSourceDump from PathForVndkRefAbiDump()
diff --git a/android/paths.go b/android/paths.go
index af2f956..31c5977 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -826,37 +826,40 @@
 	return PathForOutput(ctx, ".intermediates", ctx.ModuleDir(), ctx.ModuleName(), ctx.ModuleSubDir())
 }
 
-// PathForVndkRefDump returns an OptionalPath representing the path of the reference
-// abi dump for the given module. This is not guaranteed to be valid.
-func PathForVndkRefAbiDump(ctx ModuleContext, version, fileName string, vndkOrNdk, isSourceDump bool) OptionalPath {
+// PathForVndkRefAbiDump returns an OptionalPath representing the path of the
+// reference abi dump for the given module. This is not guaranteed to be valid.
+func PathForVndkRefAbiDump(ctx ModuleContext, version, fileName string,
+	isLlndk, isGzip bool) OptionalPath {
+
 	arches := ctx.DeviceConfig().Arches()
+	if len(arches) == 0 {
+		panic("device build with no primary arch")
+	}
 	currentArch := ctx.Arch()
 	archNameAndVariant := currentArch.ArchType.String()
 	if currentArch.ArchVariant != "" {
 		archNameAndVariant += "_" + currentArch.ArchVariant
 	}
-	var sourceOrBinaryDir string
-	var vndkOrNdkDir string
-	var ext string
-	if isSourceDump {
-		ext = ".lsdump.gz"
-		sourceOrBinaryDir = "source-based"
+
+	var dirName string
+	if isLlndk {
+		dirName = "ndk"
 	} else {
-		ext = ".bdump.gz"
-		sourceOrBinaryDir = "binary-based"
+		dirName = "vndk"
 	}
-	if vndkOrNdk {
-		vndkOrNdkDir = "vndk"
-	} else {
-		vndkOrNdkDir = "ndk"
-	}
-	if len(arches) == 0 {
-		panic("device build with no primary arch")
-	}
+
 	binderBitness := ctx.DeviceConfig().BinderBitness()
-	refDumpFileStr := "prebuilts/abi-dumps/" + vndkOrNdkDir + "/" + version + "/" + binderBitness + "/" +
-		archNameAndVariant + "/" + sourceOrBinaryDir + "/" + fileName + ext
-	return ExistentPathForSource(ctx, refDumpFileStr)
+
+	var ext string
+	if isGzip {
+		ext = ".lsdump.gz"
+	} else {
+		ext = ".lsdump"
+	}
+
+	return ExistentPathForSource(ctx, "prebuilts", "abi-dumps", dirName,
+		version, binderBitness, archNameAndVariant, "source-based",
+		fileName+ext)
 }
 
 // PathForModuleOut returns a Path representing the paths... under the module's
diff --git a/cc/library.go b/cc/library.go
index e92cf9d..5da36dc 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -631,6 +631,27 @@
 	return ret
 }
 
+func getRefAbiDumpFile(ctx ModuleContext, vndkVersion, fileName string) android.Path {
+	isLlndk := inList(ctx.baseModuleName(), llndkLibraries)
+
+	refAbiDumpTextFile := android.PathForVndkRefAbiDump(ctx, vndkVersion, fileName, isLlndk, false)
+	refAbiDumpGzipFile := android.PathForVndkRefAbiDump(ctx, vndkVersion, fileName, isLlndk, true)
+
+	if refAbiDumpTextFile.Valid() {
+		if refAbiDumpGzipFile.Valid() {
+			ctx.ModuleErrorf(
+				"Two reference ABI dump files are found: %q and %q. Please delete the stale one.",
+				refAbiDumpTextFile, refAbiDumpGzipFile)
+			return nil
+		}
+		return refAbiDumpTextFile.Path()
+	}
+	if refAbiDumpGzipFile.Valid() {
+		return UnzipRefDump(ctx, refAbiDumpGzipFile.Path(), fileName)
+	}
+	return nil
+}
+
 func (library *libraryDecorator) linkSAbiDumpFiles(ctx ModuleContext, objs Objects, fileName string, soFile android.Path) {
 	if len(objs.sAbiDumpFiles) > 0 && ctx.shouldCreateVndkSourceAbiDump() {
 		vndkVersion := ctx.DeviceConfig().PlatformVndkVersion()
@@ -649,22 +670,14 @@
 		exportedHeaderFlags := strings.Join(SourceAbiFlags, " ")
 		library.sAbiOutputFile = TransformDumpToLinkedDump(ctx, objs.sAbiDumpFiles, soFile, fileName, exportedHeaderFlags)
 
-		refSourceDumpFile := android.PathForVndkRefAbiDump(ctx, vndkVersion, fileName, vndkVsNdk(ctx), true)
-		if refSourceDumpFile.Valid() {
-			unzippedRefDump := UnzipRefDump(ctx, refSourceDumpFile.Path(), fileName)
+		refAbiDumpFile := getRefAbiDumpFile(ctx, vndkVersion, fileName)
+		if refAbiDumpFile != nil {
 			library.sAbiDiff = SourceAbiDiff(ctx, library.sAbiOutputFile.Path(),
-				unzippedRefDump, fileName, exportedHeaderFlags, ctx.isVndkExt())
+				refAbiDumpFile, fileName, exportedHeaderFlags, ctx.isVndkExt())
 		}
 	}
 }
 
-func vndkVsNdk(ctx ModuleContext) bool {
-	if inList(ctx.baseModuleName(), llndkLibraries) {
-		return false
-	}
-	return true
-}
-
 func (library *libraryDecorator) link(ctx ModuleContext,
 	flags Flags, deps PathDeps, objs Objects) android.Path {