Skip to content

CI: Add native Windows arm64 job/package #4931

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

kinke
Copy link
Member

@kinke kinke commented May 15, 2025

No description provided.

…le regressions with LLVM 20"

This reverts commit ad4a35a.
@kinke kinke force-pushed the gha_woa64 branch 7 times, most recently from bffad2e to ff026ee Compare May 16, 2025 00:46
That 'soft' implementation (of an 80-bit x87 value used for compile-time
reals on Windows MSVC x86[_64] hosts, if their native `real` is a 64-bit
double with an LDC host compiler) is still based on x87 inline asm,
so cannot be used in a WoA64 compiler binary.

So use a 64-bit native `real` for compile-time reals on WoA64 hosts.
@kinke
Copy link
Member Author

kinke commented May 16, 2025

Current blocker: ldc2.exe doesn't link, 3 misaligned relocations apparently. With -link-internally:

lld-link: error: misaligned ldr/str offset

lld-link: error: misaligned ldr/str offset

lld-link: error: misaligned ldr/str offset

Error: linking with LLD failed

Surprisingly better diagnostics with the MS linker:

ldc.lib(main.cpp.obj) : error LNK2048: relocation PAGEOFFSET_12L targeting '?global@@3UGlobal@@A' (0774A1B8) is invalid for the instruction (3D800100 at RVA 0023822C) at section 0x16 offset 0xAB0, due to bad alignment of offset to target (1B8); expected to be 16 bytes aligned
ldc.lib(main.cpp.obj) : error LNK2048: relocation PAGEOFFSET_12L targeting '?global@@3UGlobal@@A' (0774A1B8) is invalid for the instruction (3D811500 at RVA 0023850C) at section 0x16 offset 0xD90, due to bad alignment of offset to target (608); expected to be 16 bytes aligned
ldc.lib(main.cpp.obj) : error LNK2048: relocation PAGEOFFSET_12L targeting '?global@@3UGlobal@@A' (0774A1B8) is invalid for the instruction (3D80E900 at RVA 0023855C) at section 0x16 offset 0xDE0, due to bad alignment of offset to target (558); expected to be 16 bytes aligned
LINK : fatal error LNK1165: link failed because of fixup errors

I.e., coming from C++, and wrt. the Global global variable (defined in D). I wasn't really expecting anything with an alignment of 16 on WoA64 here in that struct (real_t is a 64-bit double).

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.

1 participant