Skip to content

Conversation

topolarity
Copy link
Member

This reverts commit eb4416b.

As of LLVM 16, we automatically emit:

.drectve `-exclude-symbols:"<symbol>"`

which mitigates this issue where it is supported by the linker (GCC 11+ and LLD 14+ are tested working)

PackageCompiler on Windows now ships GCC 14 (JuliaLang/PackageCompiler.jl#1012), so we should no longer need this workaround that can make a 15-minute sysimage compilation take an hour+

@topolarity topolarity linked an issue Oct 3, 2025 that may be closed by this pull request
@topolarity topolarity added backport 1.11 Change should be backported to release-1.11 backport 1.12 Change should be backported to release-1.12 labels Oct 3, 2025
@DilumAluthge
Copy link
Member

So, with this reversion, PackageCompiler will have a new GCC version requirement (GCC 11+), right? Does that requirement only apply to Windows, or does it also apply to Linux and maCOS?

@topolarity
Copy link
Member Author

PackageCompiler will have a new GCC version requirement (GCC 11+), right?

Yes - slightly older might be OK too, but GCC 8 is definitely not supported. It spits out:

Warning: .drectve `-exclude-symbols:jl_fvar_count_9 ' unrecognized
Warning: .drectve `-exclude-symbols:jl_fvar_ptrs_9 ' unrecognized
Warning: .drectve `-exclude-symbols:jl_clone_slots_9 ' unrecognized
Warning: .drectve `-exclude-symbols:jl_clone_idxs_9 ' unrecognized

when used on Julia 1.11+ (JuliaLang/PackageCompiler.jl#918)

Does that requirement only apply to Windows, or does it also apply to Linux and maCOS?

It should only apply to Windows / COFF (where we rely on these directives)

…50874)"

This reverts commit eb4416b.

As of LLVM 16, we automatically emit:
.drectve `-exclude-symbols:"<symbol>"`

which mitigates this issue where it is supported by the linker (which
is the case for at least GCC 11+ and LLD 14+). PackageCompiler on Windows
now ships GCC 14 (JuliaLang/PackageCompiler.jl#1012),
so we should no longer need this workaround that can make a 15-minute
sysimage compilation take an hour+
@DilumAluthge
Copy link
Member

SGTM. We bundle the gcc on Windows. In theory people could override with their own gcc, so in theory we should document the Windows-specfici gcc 11+ requirement somewhere. But most people will use the bundled gcc on Windows, so it's not super pressing to add the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backport 1.11 Change should be backported to release-1.11 backport 1.12 Change should be backported to release-1.12
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support multi-threading for large images on Windows.
2 participants