Minor fixes for starlark cc_binary.

Fixed a typo where "expand" was used on the list instead of "extend".
Added implementation for libraries collection from linking context.
"pdb_file" output group key now uses depset of file as value instead of file.

Also fixes HeadersCheckingMode parsing to take into account warnings.

PiperOrigin-RevId: 415496062
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
index 5726980..f29aff5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -2206,7 +2206,7 @@
                 .collect(ImmutableList.toImmutableList()))
         .setPropagateModuleMapToCompileAction(propagateModuleMapToCompileAction)
         .setCodeCoverageEnabled(codeCoverageEnabled)
-        .setHeadersCheckingMode(HeadersCheckingMode.valueOf(Ascii.toUpperCase(hdrsCheckingMode)));
+        .setHeadersCheckingMode(HeadersCheckingMode.getValue(hdrsCheckingMode));
 
     ImmutableList<PathFragment> looseIncludeDirs =
         looseIncludes.stream().map(PathFragment::create).collect(ImmutableList.toImmutableList());
diff --git a/src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl b/src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl
index 5bd8128..6bce509 100644
--- a/src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/cc_binary.bzl
@@ -795,10 +795,10 @@
                     if is_static_mode or (library.dynamic_library == None and library.interface_library == None):
                         if library.pic_static_library != None:
                             if library.pic_objects != None:
-                                object_files.expand(library.pic_objects)
+                                object_files.extend(library.pic_objects)
                         elif library.static_library != None:
                             if library.objects != None:
-                                object_files.expand(library.objects)
+                                object_files.extend(library.objects)
             def_parser = None
 
             # TODO(b/198254254): def_parser
@@ -882,7 +882,11 @@
     # all the dynamic libraries we need at runtime. Then copy these libraries next to the binary.
     copied_runtime_dynamic_libraries = None
     if cc_common.is_enabled(feature_configuration = feature_configuration, feature_name = "copy_dynamic_libraries_to_binary"):
-        copied_runtime_dynamic_libraries = _create_dynamic_libraries_copy_actions(ctx, _get_dynamic_libraries_for_runtime(is_static_mode, deps_cc_linking_context.libraries.to_list()))
+        linker_inputs = deps_cc_linking_context.linker_inputs.to_list()
+        libraries = []
+        for linker_input in linker_inputs:
+            libraries.extend(linker_input.libraries)
+        copied_runtime_dynamic_libraries = _create_dynamic_libraries_copy_actions(ctx, _get_dynamic_libraries_for_runtime(is_static_mode, libraries))
 
     # TODO(b/198254254)(bazel-team): Do we need to put original shared libraries (along with
     # mangled symlinks) into the RunfilesSupport object? It does not seem
@@ -927,7 +931,7 @@
 
     # If PDB file is generated by the link action, we add it to pdb_file output group
     if pdb_file != None:
-        output_groups["pdb_file"] = pdb_file
+        output_groups["pdb_file"] = depset([pdb_file])
     if generated_def_file != None:
         output_groups["def_file"] = generated_def_file
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/cc_toolchain_config.bzl b/src/test/java/com/google/devtools/build/lib/analysis/mock/cc_toolchain_config.bzl
index 08a4bc0..5259ca7 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/cc_toolchain_config.bzl
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/cc_toolchain_config.bzl
@@ -32,6 +32,7 @@
 load("@bazel_tools//tools/build_defs/cc:action_names.bzl", "ACTION_NAMES")
 
 _FEATURE_NAMES = struct(
+    generate_pdb_file = "generate_pdb_file",
     no_legacy_features = "no_legacy_features",
     do_not_split_linking_cmdline = "do_not_split_linking_cmdline",
     supports_dynamic_linker = "supports_dynamic_linker",
@@ -766,6 +767,10 @@
     name = _FEATURE_NAMES.copy_dynamic_libraries_to_binary,
 )
 
+_generate_pdb_file_feature = feature(
+    name = _FEATURE_NAMES.generate_pdb_file,
+)
+
 _supports_start_end_lib_feature = feature(
     name = _FEATURE_NAMES.supports_start_end_lib,
     enabled = True,
@@ -1317,6 +1322,7 @@
     _FEATURE_NAMES.disable_pbh: _disable_pbh_feature,
     _FEATURE_NAMES.optional_cc_flags_feature: _optional_cc_flags_feature,
     _FEATURE_NAMES.cpp_compile_with_requirements: _cpp_compile_with_requirements,
+    _FEATURE_NAMES.generate_pdb_file: _generate_pdb_file_feature,
     "header_modules_feature_configuration": _header_modules_feature_configuration,
     "env_var_feature_configuration": _env_var_feature_configuration,
     "host_and_nonhost_configuration": _host_and_nonhost_configuration,