Control value of experimental_link_static_libraries_once via semantics

PiperOrigin-RevId: 511128376
Change-Id: I17a0804cc8c383a3a0880b962c7bfb40557395a4
diff --git a/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl b/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl
index c3c6a82..2c2070c 100644
--- a/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/experimental_cc_shared_library.bzl
@@ -522,7 +522,7 @@
     debug_files.append(exports_debug_file)
     debug_files.append(link_once_static_libs_debug_file)
 
-    if not ctx.fragments.cpp.experimental_link_static_libraries_once():
+    if not semantics.get_experimental_link_static_libraries_once(ctx):
         curr_link_once_static_libs_set = {}
 
     library = []
diff --git a/src/main/starlark/builtins_bzl/common/cc/semantics.bzl b/src/main/starlark/builtins_bzl/common/cc/semantics.bzl
index 52421ce..9ba6ca9 100644
--- a/src/main/starlark/builtins_bzl/common/cc/semantics.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/semantics.bzl
@@ -171,6 +171,9 @@
 def _get_nocopts_attr():
     return {}
 
+def _get_experimental_link_static_libraries_once(ctx):
+    return ctx.fragments.cpp.experimental_link_static_libraries_once()
+
 semantics = struct(
     ALLOWED_RULES_IN_DEPS = [
         "cc_library",
@@ -211,4 +214,5 @@
     get_coverage_env = _get_coverage_env,
     get_proto_aspects = _get_proto_aspects,
     get_nocopts_attr = _get_nocopts_attr,
+    get_experimental_link_static_libraries_once = _get_experimental_link_static_libraries_once,
 )