Allow cc_prebuilt version suffix to include `svn`

This commit allows cc_prebuilt version suffix to include `svn`, e.g.
`libclang.so.8svn`.  The rationale behind this commit is that latest
LLVM/Clang prebuilt binaries use `.8svn` as the version suffix.

Bug: 111579848
Test: header-abi-dumper builds with the latest binaries
Change-Id: I91594c5d8bc57605e2e0facb0a867dc4a4a17fe6
diff --git a/cc/util.go b/cc/util.go
index 93cf536..bab4d32 100644
--- a/cc/util.go
+++ b/cc/util.go
@@ -105,7 +105,7 @@
 	return list
 }
 
-var shlibVersionPattern = regexp.MustCompile("(?:\\.\\d+)+")
+var shlibVersionPattern = regexp.MustCompile("(?:\\.\\d+(?:svn)?)+")
 
 // splitFileExt splits a file name into root, suffix and ext. root stands for the file name without
 // the file extension and the version number (e.g. "libexample"). suffix stands for the
diff --git a/cc/util_test.go b/cc/util_test.go
index 3108294..7c718ea 100644
--- a/cc/util_test.go
+++ b/cc/util_test.go
@@ -35,6 +35,22 @@
 		}
 	})
 
+	t.Run("soname with svn version", func(t *testing.T) {
+		root, suffix, ext := splitFileExt("libtest.so.1svn")
+		expected := "libtest"
+		if root != expected {
+			t.Errorf("root should be %q but got %q", expected, root)
+		}
+		expected = ".so.1svn"
+		if suffix != expected {
+			t.Errorf("suffix should be %q but got %q", expected, suffix)
+		}
+		expected = ".so"
+		if ext != expected {
+			t.Errorf("ext should be %q but got %q", expected, ext)
+		}
+	})
+
 	t.Run("version numbers in the middle should be ignored", func(t *testing.T) {
 		root, suffix, ext := splitFileExt("libtest.1.0.30.so")
 		expected := "libtest.1.0.30"