diff --git a/apex/prebuilt.go b/apex/prebuilt.go
index 5e46bab..20a13c3 100644
--- a/apex/prebuilt.go
+++ b/apex/prebuilt.go
@@ -43,9 +43,9 @@
 		},
 		"abis", "allow-prereleased", "sdk-version", "skip-sdk-check")
 	decompressApex = pctx.StaticRule("decompressApex", blueprint.RuleParams{
-		Command:     `${deapexer} decompress --copy-if-uncompressed --input ${in} --output ${out}`,
+		Command:     `rm -rf $out && ${deapexer} decompress --copy-if-uncompressed --input ${in} --output ${out}`,
 		CommandDeps: []string{"${deapexer}"},
-		Description: "decompress",
+		Description: "decompress $out",
 	})
 )
 
diff --git a/cc/config/global.go b/cc/config/global.go
index fac3388..9e39190 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -339,6 +339,9 @@
 
 		"-Wno-unused",
 		"-Wno-deprecated",
+
+		// http://b/315250603 temporarily disabled
+		"-Wno-error=format",
 	}
 
 	// Similar to noOverrideGlobalCflags, but applies only to third-party code
@@ -367,9 +370,6 @@
 		"-Wno-gnu-offsetof-extensions",
 		// TODO: Enable this warning http://b/315245071
 		"-Wno-fortify-source",
-
-		// http://b/315250603 temporarily disabled
-		"-Wno-error=format",
 	}
 
 	llvmNextExtraCommonGlobalCflags = []string{
diff --git a/cc/ndk_abi.go b/cc/ndk_abi.go
index 5beeab1..8202cc0 100644
--- a/cc/ndk_abi.go
+++ b/cc/ndk_abi.go
@@ -46,7 +46,7 @@
 
 		if m, ok := module.(*Module); ok {
 			if installer, ok := m.installer.(*stubDecorator); ok {
-				if canDumpAbi(ctx.Config()) {
+				if canDumpAbi(ctx.Config(), ctx.ModuleDir(module)) {
 					depPaths = append(depPaths, installer.abiDumpPath)
 				}
 			}
diff --git a/cc/ndk_headers.go b/cc/ndk_headers.go
index e002931..57a3b3a 100644
--- a/cc/ndk_headers.go
+++ b/cc/ndk_headers.go
@@ -18,7 +18,6 @@
 	"path/filepath"
 
 	"android/soong/android"
-
 	"github.com/google/blueprint"
 )
 
@@ -45,7 +44,7 @@
 }
 
 // Returns the NDK base include path for use with sdk_version current. Usable with -I.
-func getCurrentIncludePath(ctx android.PathContext) android.OutputPath {
+func getCurrentIncludePath(ctx android.ModuleContext) android.OutputPath {
 	return getNdkSysrootBase(ctx).Join(ctx, "usr/include")
 }
 
@@ -74,13 +73,6 @@
 
 	// Path to the NOTICE file associated with the headers.
 	License *string `android:"path"`
-
-	// Set to true if the headers installed by this module should skip
-	// verification. This step ensures that each header is self-contained (can
-	// be #included alone) and is valid C. This should not be disabled except in
-	// rare cases. Outside bionic and external, if you're using this option
-	// you've probably made a mistake.
-	Skip_verification *bool
 }
 
 type headerModule struct {
@@ -317,13 +309,6 @@
 
 	// Path to the NOTICE file associated with the headers.
 	License *string
-
-	// Set to true if the headers installed by this module should skip
-	// verification. This step ensures that each header is self-contained (can
-	// be #included alone) and is valid C. This should not be disabled except in
-	// rare cases. Outside bionic and external, if you're using this option
-	// you've probably made a mistake.
-	Skip_verification *bool
 }
 
 type preprocessedHeadersModule struct {
diff --git a/cc/ndk_library.go b/cc/ndk_library.go
index b822e5c..3e35ef5 100644
--- a/cc/ndk_library.go
+++ b/cc/ndk_library.go
@@ -321,10 +321,19 @@
 }
 
 // Feature flag.
-func canDumpAbi(config android.Config) bool {
+func canDumpAbi(config android.Config, moduleDir string) bool {
 	if runtime.GOOS == "darwin" {
 		return false
 	}
+	if strings.HasPrefix(moduleDir, "bionic/") {
+		// Bionic has enough uncommon implementation details like ifuncs and asm
+		// code that the ABI tracking here has a ton of false positives. That's
+		// causing pretty extreme friction for development there, so disabling
+		// it until the workflow can be improved.
+		//
+		// http://b/358653811
+		return false
+	}
 	// http://b/156513478
 	return config.ReleaseNdkAbiMonitored()
 }
@@ -460,7 +469,7 @@
 	nativeAbiResult := parseNativeAbiDefinition(ctx, symbolFile, c.apiLevel, "")
 	objs := compileStubLibrary(ctx, flags, nativeAbiResult.stubSrc)
 	c.versionScriptPath = nativeAbiResult.versionScript
-	if canDumpAbi(ctx.Config()) {
+	if canDumpAbi(ctx.Config(), ctx.ModuleDir()) {
 		c.dumpAbi(ctx, nativeAbiResult.symbolList)
 		if canDiffAbi(ctx.Config()) {
 			c.diffAbi(ctx)
diff --git a/cc/ndk_sysroot.go b/cc/ndk_sysroot.go
index f571523..3c48f68 100644
--- a/cc/ndk_sysroot.go
+++ b/cc/ndk_sysroot.go
@@ -54,22 +54,7 @@
 
 import (
 	"android/soong/android"
-	"fmt"
-	"path/filepath"
 	"strings"
-
-	"github.com/google/blueprint"
-)
-
-var (
-	verifyCCompat = pctx.AndroidStaticRule("verifyCCompat",
-		blueprint.RuleParams{
-			Command:     "$ccCmd -x c -fsyntax-only $flags $in && touch $out",
-			CommandDeps: []string{"$ccCmd"},
-		},
-		"ccCmd",
-		"flags",
-	)
 )
 
 func init() {
@@ -118,45 +103,6 @@
 	return android.PathForOutput(ctx, "ndk_abi_headers.txt")
 }
 
-func verifyNdkHeaderIsCCompatible(ctx android.SingletonContext,
-	src android.Path, dest android.Path) android.Path {
-	sysrootInclude := getCurrentIncludePath(ctx)
-	baseOutputDir := android.PathForOutput(ctx, "c-compat-verification")
-	installRelPath, err := filepath.Rel(sysrootInclude.String(), dest.String())
-	if err != nil {
-		ctx.Errorf("filepath.Rel(%q, %q) failed: %s", dest, sysrootInclude, err)
-	}
-	output := baseOutputDir.Join(ctx, installRelPath)
-	ctx.Build(pctx, android.BuildParams{
-		Rule:        verifyCCompat,
-		Description: fmt.Sprintf("Verifying C compatibility of %s", src),
-		Output:      output,
-		Input:       dest,
-		// Ensures that all the headers in the sysroot are already installed
-		// before testing any of the headers for C compatibility, and also that
-		// the check will be re-run whenever the sysroot changes. This is
-		// necessary because many of the NDK headers depend on other NDK
-		// headers, but we don't have explicit dependency tracking for that.
-		Implicits: []android.Path{getNdkHeadersTimestampFile(ctx)},
-		Args: map[string]string{
-			"ccCmd": "${config.ClangBin}/clang",
-			"flags": fmt.Sprintf(
-				// Ideally we'd check each ABI, multiple API levels,
-				// fortify/non-fortify, and a handful of other variations. It's
-				// a lot more difficult to do that though, and would eat up more
-				// build time. All the problems we've seen so far that this
-				// check would catch have been in arch-generic and
-				// minSdkVersion-generic code in frameworks though, so this is a
-				// good place to start.
-				"-target aarch64-linux-android%d --sysroot %s",
-				android.FutureApiLevel.FinalOrFutureInt(),
-				getNdkSysrootBase(ctx).String(),
-			),
-		},
-	})
-	return output
-}
-
 func NdkSingleton() android.Singleton {
 	return &ndkSingleton{}
 }
@@ -197,17 +143,10 @@
 
 type ndkSingleton struct{}
 
-type srcDestPair struct {
-	src  android.Path
-	dest android.Path
-}
-
 func (n *ndkSingleton) GenerateBuildActions(ctx android.SingletonContext) {
 	var staticLibInstallPaths android.Paths
 	var headerSrcPaths android.Paths
 	var headerInstallPaths android.Paths
-	var headersToVerify []srcDestPair
-	var headerCCompatVerificationTimestampPaths android.Paths
 	var installPaths android.Paths
 	var licensePaths android.Paths
 	ctx.VisitAllModules(func(module android.Module) {
@@ -218,14 +157,6 @@
 		if m, ok := module.(*headerModule); ok {
 			headerSrcPaths = append(headerSrcPaths, m.srcPaths...)
 			headerInstallPaths = append(headerInstallPaths, m.installPaths...)
-			if !Bool(m.properties.Skip_verification) {
-				for i, installPath := range m.installPaths {
-					headersToVerify = append(headersToVerify, srcDestPair{
-						src:  m.srcPaths[i],
-						dest: installPath,
-					})
-				}
-			}
 			installPaths = append(installPaths, m.installPaths...)
 			licensePaths = append(licensePaths, m.licensePath)
 		}
@@ -233,10 +164,6 @@
 		if m, ok := module.(*versionedHeaderModule); ok {
 			headerSrcPaths = append(headerSrcPaths, m.srcPaths...)
 			headerInstallPaths = append(headerInstallPaths, m.installPaths...)
-			// Verification intentionally not done for headers that go through
-			// versioner. It'd be nice to have, but the only user is bionic, and
-			// that one module would also need to use skip_verification, so it
-			// wouldn't help at all.
 			installPaths = append(installPaths, m.installPaths...)
 			licensePaths = append(licensePaths, m.licensePath)
 		}
@@ -244,14 +171,6 @@
 		if m, ok := module.(*preprocessedHeadersModule); ok {
 			headerSrcPaths = append(headerSrcPaths, m.srcPaths...)
 			headerInstallPaths = append(headerInstallPaths, m.installPaths...)
-			if !Bool(m.properties.Skip_verification) {
-				for i, installPath := range m.installPaths {
-					headersToVerify = append(headersToVerify, srcDestPair{
-						src:  m.srcPaths[i],
-						dest: installPath,
-					})
-				}
-			}
 			installPaths = append(installPaths, m.installPaths...)
 			licensePaths = append(licensePaths, m.licensePath)
 		}
@@ -304,12 +223,6 @@
 		Implicits: headerInstallPaths,
 	})
 
-	for _, srcDestPair := range headersToVerify {
-		headerCCompatVerificationTimestampPaths = append(
-			headerCCompatVerificationTimestampPaths,
-			verifyNdkHeaderIsCCompatible(ctx, srcDestPair.src, srcDestPair.dest))
-	}
-
 	writeNdkAbiSrcFilter(ctx, headerSrcPaths, getNdkABIHeadersFile(ctx))
 
 	fullDepPaths := append(staticLibInstallPaths, getNdkBaseTimestampFile(ctx))
@@ -322,6 +235,6 @@
 	ctx.Build(pctx, android.BuildParams{
 		Rule:      android.Touch,
 		Output:    getNdkFullTimestampFile(ctx),
-		Implicits: append(fullDepPaths, headerCCompatVerificationTimestampPaths...),
+		Implicits: fullDepPaths,
 	})
 }
diff --git a/rust/bindgen.go b/rust/bindgen.go
index d412ea1..a81024a 100644
--- a/rust/bindgen.go
+++ b/rust/bindgen.go
@@ -364,7 +364,7 @@
 		ClangProperties:    cc.RustBindgenClangProperties{},
 	}
 
-	module := NewSourceProviderModule(hod, bindgen, false, true)
+	module := NewSourceProviderModule(hod, bindgen, false, false)
 
 	android.AddLoadHook(module, func(ctx android.LoadHookContext) {
 		type stub_props struct {
