build(windows): do not pass -z noexecstack when cross-compiling to PE - #1444
Open
mlandolfi90 wants to merge 1 commit into
Open
build(windows): do not pass -z noexecstack when cross-compiling to PE#1444mlandolfi90 wants to merge 1 commit into
mlandolfi90 wants to merge 1 commit into
Conversation
ELF_HARDENING_FLAGS is gated on IS_LINUX, which comes from uname and so
describes the HOST. Cross-compiling to Windows from a Linux container
(test-infrastructure/docker-compose.yml build-windows, llvm-mingw)
satisfies that gate while the compiler emits PE, and the link fails:
lld: error: unknown argument: -z
clang: error: linker command failed with exit code 1
This is the flag's own documented intent -- the comment above it already
says the flag is ELF-only and 'meaningless for PE, so it is gated'. The
gate simply tested the wrong end of the toolchain. IS_MINGW is derived
from the compiler's _WIN32 define, so adding it names the target.
Native Windows builds (MSYS2 CLANG64) are unaffected: uname reports
MINGW64_NT there, so IS_LINUX was already 'no'. Linux and macOS builds
are unaffected. Only the Linux-host -> Windows-target combination
changes, and only to stop emitting a flag that cannot apply.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: mlandolfi90 <mlandolfi90@users.noreply.github.com>
|
Thanks for opening this — it has been seen, and it is queued. This note is automated, but it is not a brush-off: it exists so you know where your PR stands instead of having to guess from silence. Current review status: working through a backlog. What that means for this PR, concretely:
Things that will genuinely speed it up whenever review does happen:
If this fixes a bug, a reproduction we can run is worth more than a description of the symptom. Thanks for contributing, and sorry in advance for the wait. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ELF_HARDENING_FLAGSis gated onIS_LINUX, which comes fromunameand therefore describes the host. Cross-compiling to Windows from a Linux container satisfies that gate while the compiler emits PE, and the link fails:Reproduced on
mainwith the repo's own recipe:The fix restores the flag's documented intent — the comment above it already states it is ELF-only and "meaningless for PE, so it is gated". The gate just tested the wrong end of the toolchain.
IS_MINGWis derived from the compiler's own_WIN32define, so adding it names the target rather than the host.Native Windows CI (MSYS2 CLANG64) is unaffected:
unamereportsMINGW64_NTthere, soIS_LINUXwas alreadyno. Linux and macOS are unaffected. Only the Linux-host → Windows-target combination changes, and only to stop emitting a flag that cannot apply.On CONTRIBUTING's "Build system / Makefile changes — beyond trivial fixes": I read this as a trivial fix (one gate condition, no behaviour change on any venue CI builds). Happy to move it to an issue first if you would rather discuss it.
🤖 Generated with Claude Code