diff --git a/cc/sanitize.go b/cc/sanitize.go
index a23e2db..5c68a96 100644
--- a/cc/sanitize.go
+++ b/cc/sanitize.go
@@ -96,7 +96,7 @@
 	Hwasan
 	tsan
 	intOverflow
-	Scs
+	scs
 	Fuzzer
 	Memtag_heap
 	Memtag_stack
@@ -109,7 +109,7 @@
 	Hwasan,
 	tsan,
 	intOverflow,
-	Scs,
+	scs,
 	Fuzzer,
 	Memtag_heap,
 	Memtag_stack,
@@ -130,7 +130,7 @@
 		return "intOverflow"
 	case cfi:
 		return "cfi"
-	case Scs:
+	case scs:
 		return "scs"
 	case Memtag_heap:
 		return "memtag_heap"
@@ -164,7 +164,7 @@
 		return "integer_overflow"
 	case cfi:
 		return "cfi"
-	case Scs:
+	case scs:
 		return "shadow-call-stack"
 	case Fuzzer:
 		return "fuzzer"
@@ -175,7 +175,7 @@
 
 func (t SanitizerType) registerMutators(ctx android.RegisterMutatorsContext) {
 	switch t {
-	case cfi, Hwasan, Asan, tsan, Fuzzer, Scs:
+	case cfi, Hwasan, Asan, tsan, Fuzzer, scs:
 		sanitizer := &sanitizerSplitMutator{t}
 		ctx.TopDown(t.variationName()+"_markapexes", sanitizer.markSanitizableApexesMutator)
 		ctx.Transition(t.variationName(), sanitizer)
@@ -212,7 +212,7 @@
 		return true
 	case cfi:
 		return true
-	case Scs:
+	case scs:
 		return true
 	case Fuzzer:
 		return true
@@ -1012,7 +1012,7 @@
 		return s.Properties.SanitizeMutated.Integer_overflow
 	case cfi:
 		return s.Properties.SanitizeMutated.Cfi
-	case Scs:
+	case scs:
 		return s.Properties.SanitizeMutated.Scs
 	case Memtag_heap:
 		return s.Properties.SanitizeMutated.Memtag_heap
@@ -1033,7 +1033,7 @@
 		!sanitize.isSanitizerEnabled(Hwasan) &&
 		!sanitize.isSanitizerEnabled(tsan) &&
 		!sanitize.isSanitizerEnabled(cfi) &&
-		!sanitize.isSanitizerEnabled(Scs) &&
+		!sanitize.isSanitizerEnabled(scs) &&
 		!sanitize.isSanitizerEnabled(Memtag_heap) &&
 		!sanitize.isSanitizerEnabled(Memtag_stack) &&
 		!sanitize.isSanitizerEnabled(Memtag_globals) &&
@@ -1070,7 +1070,7 @@
 		sanitize.Properties.SanitizeMutated.Integer_overflow = bPtr
 	case cfi:
 		sanitize.Properties.SanitizeMutated.Cfi = bPtr
-	case Scs:
+	case scs:
 		sanitize.Properties.SanitizeMutated.Scs = bPtr
 	case Memtag_heap:
 		sanitize.Properties.SanitizeMutated.Memtag_heap = bPtr
@@ -1330,7 +1330,7 @@
 
 		oneMakeVariation := false
 		if c.StaticallyLinked() || c.Header() {
-			if s.sanitizer != cfi && s.sanitizer != Scs && s.sanitizer != Hwasan {
+			if s.sanitizer != cfi && s.sanitizer != scs && s.sanitizer != Hwasan {
 				// These sanitizers export only one variation to Make. For the rest,
 				// Make targets can depend on both the sanitized and non-sanitized
 				// versions.
@@ -1340,7 +1340,7 @@
 			// Shared library. These are the sanitizers that do propagate through shared
 			// library dependencies and therefore can cause multiple variations of a
 			// shared library to be built.
-			if s.sanitizer != cfi && s.sanitizer != Hwasan && s.sanitizer != Scs && s.sanitizer != Asan {
+			if s.sanitizer != cfi && s.sanitizer != Hwasan && s.sanitizer != scs && s.sanitizer != Asan {
 				oneMakeVariation = true
 			}
 		}
diff --git a/cc/vendor_snapshot.go b/cc/vendor_snapshot.go
index 2421e24..9ea337b 100644
--- a/cc/vendor_snapshot.go
+++ b/cc/vendor_snapshot.go
@@ -95,7 +95,7 @@
 		if sanitizable.SanitizePropDefined() {
 			// scs exports both sanitized and unsanitized variants for static and header
 			// Always use unsanitized variant of it.
-			if !sanitizable.Shared() && sanitizable.IsSanitizerEnabled(Scs) {
+			if !sanitizable.Shared() && sanitizable.IsSanitizerEnabled(scs) {
 				return false
 			}
 			// cfi and hwasan also export both variants. But for static, we capture both.
