This is an automated email from the ASF dual-hosted git repository.

leginee pushed a commit to branch bazel-migration
in repository https://gitbox.apache.org/repos/asf/openoffice.git

commit 57da26c8dddbfa6d7bdcc45351e4380e071fac05
Author: Peter Kovacs <[email protected]>
AuthorDate: Fri Jul 3 00:23:22 2026 +0200

    update build tools to resolve linker mashup
---
 build/toolchain/windows_cc_toolchain_config.bzl | 39 +++++++++++++++----------
 1 file changed, 24 insertions(+), 15 deletions(-)

diff --git a/build/toolchain/windows_cc_toolchain_config.bzl 
b/build/toolchain/windows_cc_toolchain_config.bzl
index 85924bb390..9f17165cb6 100644
--- a/build/toolchain/windows_cc_toolchain_config.bzl
+++ b/build/toolchain/windows_cc_toolchain_config.bzl
@@ -149,13 +149,14 @@ def _impl(ctx):
         # Linker tool selection for the executable / dynamic-library link 
actions.
         # When the generate_pdb feature is enabled (debug builds that emit 
.pdb),
         # Bazel runs a modern MSVC link.exe (pdb_link_path, auto-discovered 
from a
-        # VS2017+/BuildTools install). The VC9 linker's single mspdbsrv cannot
-        # write PDBs in parallel (LNK1318 0x6BA; VC9 has no /FS), while a 
modern
-        # link.exe reads the VC9 /Z7 objects natively and its mspdbsrv handles
-        # parallel PDB writes — so debug builds run at full --jobs. (LLVM 
lld-link
-        # was rejected: it cannot emit PDBs from VC9-era CodeView.) Every other
-        # link stays on VC9 link.exe so shipped (non-PDB) binaries are 
produced by
-        # the same linker as before. Bazel selects the first tool whose
+        # VS2017+/BuildTools install), whose mspdbsrv writes PDBs in parallel 
so
+        # /DEBUG links run at full --jobs (VC9's single mspdbsrv cannot: 
LNK1318
+        # 0x6BA, no /FS). The modern linker consumes VC9 /Z7 objects only under
+        # /DEBUG:FASTLINK — its full CodeView→PDB *merge* (plain /DEBUG) 
access-
+        # violates on VC9-era CodeView (0xC0000005, e.g. //main/sal:sal3), so 
the
+        # generate_pdb feature passes /DEBUG:FASTLINK (see 
generate_pdb_linker_feature).
+        # Every other link stays on VC9 link.exe so shipped (non-PDB) binaries 
are
+        # produced by the same linker as before. Bazel selects the first tool 
whose
         # with_features set matches the active feature configuration.
         link_tools = [
             tool(
@@ -1384,14 +1385,22 @@ def _impl(ctx):
             flag_sets = [
                 flag_set(
                     actions = all_link_actions,
-                    # /DEBUG: emit the separate .pdb.
-                    # /SAFESEH:NO: this feature routes links through lld-link 
(see
-                    # link_tools), which — unlike VC9 link.exe — enforces 
/safeseh
-                    # on x86 and rejects data-only objects that carry no SEH 
table
-                    # (e.g. ICU's icudt49_dat.obj). SafeSEH is a ship-time 
mitigation
-                    # and these are non-distributed debug binaries, so 
disabling it
-                    # here is harmless and only affects the generate_pdb path.
-                    flag_groups = [flag_group(flags = ["/DEBUG", 
"/SAFESEH:NO"])],
+                    # /DEBUG:FASTLINK — not plain /DEBUG (= /DEBUG:FULL). This 
feature
+                    # routes links through the modern VS2017+/BuildTools 
link.exe (see
+                    # link_tools), whose full CodeView→PDB *merge* 
access-violates
+                    # (0xC0000005) on the VC9-era CodeView emitted by VC9 
cl.exe's /Z7
+                    # objects (e.g. //main/sal:sal3). FASTLINK skips that 
merge and
+                    # emits a partial .pdb that references the /Z7 debug info 
left in
+                    # the .obj/.lib under bazel-out — fine for on-machine 
debugging of
+                    # these non-distributed debug binaries. VC9 link.exe is 
the only
+                    # linker that can produce a full standalone PDB from these 
objects,
+                    # but it cannot write PDBs in parallel (LNK1318 0x6BA, no 
/FS).
+                    # /SAFESEH:NO: the modern linker — unlike VC9 link.exe — 
enforces
+                    # /safeseh on x86 and rejects data-only objects that carry 
no SEH
+                    # table (e.g. ICU's icudt49_dat.obj). SafeSEH is a 
ship-time
+                    # mitigation and these are non-distributed debug binaries, 
so
+                    # disabling it here is harmless and only affects the 
generate_pdb path.
+                    flag_groups = [flag_group(flags = ["/DEBUG:FASTLINK", 
"/SAFESEH:NO"])],
                 ),
             ],
         )

Reply via email to