Skip to content

mingw: Rename mingw32.lib to libmingw32.lib.#23284

Merged
alexrp merged 1 commit intoziglang:masterfrom
alexrp:libmingw32
Mar 18, 2025
Merged

mingw: Rename mingw32.lib to libmingw32.lib.#23284
alexrp merged 1 commit intoziglang:masterfrom
alexrp:libmingw32

Conversation

@alexrp
Copy link
Copy Markdown
Member

@alexrp alexrp commented Mar 18, 2025

LLD expects the library file name (minus extension) to be exactly libmingw32. By calling it mingw32 previously, we prevented it from being detected as being in LLD's list of libraries that are excluded from the MinGW-specific auto-export mechanism.

https://github.com/llvm/llvm-project/blob/b9d27ac252265839354fffeacaa8f39377ed7424/lld/COFF/MinGW.cpp#L30-L56

As a result, a DLL built for *-windows-gnu with Zig would export a bunch of internal MinGW symbols. This sometimes worked out fine, but it could break at link or run time when linking an EXE with a DLL, where both are targeting *-windows-gnu and thus linking separate copies of mingw32.lib. In #23204, this manifested as the linker getting confused about _gnu_exception_handler() because it was incorrectly exported by the DLL while also being defined in the mingw32.lib that was being linked into the EXE.

Closes #23204.

Related: #22415

LLD expects the library file name (minus extension) to be exactly libmingw32. By
calling it mingw32 previously, we prevented it from being detected as being in
LLD's list of libraries that are excluded from the MinGW-specific auto-export
mechanism.

https://github.com/llvm/llvm-project/blob/b9d27ac252265839354fffeacaa8f39377ed7424/lld/COFF/MinGW.cpp#L30-L56

As a result, a DLL built for *-windows-gnu with Zig would export a bunch of
internal MinGW symbols. This sometimes worked out fine, but it could break at
link or run time when linking an EXE with a DLL, where both are targeting
*-windows-gnu and thus linking separate copies of mingw32.lib. In #23204, this
manifested as the linker getting confused about _gnu_exception_handler() because
it was incorrectly exported by the DLL while also being defined in the
mingw32.lib that was being linked into the EXE.

Closes #23204.
@alexrp alexrp added this to the 0.14.1 milestone Mar 18, 2025
@alexrp alexrp enabled auto-merge (rebase) March 18, 2025 03:56
@alexrp alexrp merged commit 074dd4d into ziglang:master Mar 18, 2025
9 checks passed
@alexrp alexrp deleted the libmingw32 branch March 18, 2025 19:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Linker error on dynamic library

1 participant